diff options
author | Svxy <aidan61605@gmail.com> | 2023-05-31 23:31:32 +0200 |
---|---|---|
committer | Svxy <aidan61605@gmail.com> | 2023-05-31 23:31:32 +0200 |
commit | eb4b3404aa00220d659e532151dab13d642c17a3 (patch) | |
tree | 7e1107c4995489a26c4007e41b53ea8d00ab2134 /tools | |
download | The-Simpsons-Hit-and-Run-TSH&R-PC.tar The-Simpsons-Hit-and-Run-TSH&R-PC.tar.gz The-Simpsons-Hit-and-Run-TSH&R-PC.tar.bz2 The-Simpsons-Hit-and-Run-TSH&R-PC.tar.lz The-Simpsons-Hit-and-Run-TSH&R-PC.tar.xz The-Simpsons-Hit-and-Run-TSH&R-PC.tar.zst The-Simpsons-Hit-and-Run-TSH&R-PC.zip |
Diffstat (limited to 'tools')
458 files changed, 74962 insertions, 0 deletions
diff --git a/tools/ArtChecker/DSGmaker.exe b/tools/ArtChecker/DSGmaker.exe Binary files differnew file mode 100644 index 0000000..7ae21c3 --- /dev/null +++ b/tools/ArtChecker/DSGmaker.exe diff --git a/tools/ArtChecker/artchecker.cpp b/tools/ArtChecker/artchecker.cpp new file mode 100644 index 0000000..e2a9f1c --- /dev/null +++ b/tools/ArtChecker/artchecker.cpp @@ -0,0 +1,1349 @@ +// artchecker.cpp : Defines the entry point for the console application. +// options -strict -add -all +#pragma warning(disable:4786) + + +#include <iostream> +#include <cstring> +#include <iomanip> +//#include <mysql++> +#include "artobject.h" +#include "artlimits.h" +#include "badlist.hpp" +#include "outputbuffer.hpp" +#include <toollib.hpp> +#include <tlCollisionObjectChunk.hpp> +#include <tlMeshChunk.hpp> +#include <tlImageChunk.hpp> +#include <tlAnimationChunk.hpp> +#include <tlStatepropChunk.hpp> +#include "..\..\..\..\game\code\constants\srrchunks.h" + +using namespace std; + +void debugstring(char * message); + +int texturelookup(const texture_data& texturedata, bool add, bool strict,bool showall,badlist& p_badtextures ,bool suppress); +int shaderlookup(shader_data* lp_shaderdata, bool add, bool strict,bool showall,badlist& badshaders,bool suppress); +//int artobjectlookup(art_object* lp_artobject, Query& query,bool add, bool strict,bool showall,bool suppress); +//int bvobjectlookup(bv_data* lp_bvobject,Query& query,bool add,bool strict,bool showall,bool suppress); + +int main(int argc, char* argv[]) +{ + + char* arguements [4]; + char* filename; + bool strict =false; + bool add =false; + bool badart=false; + bool showall =false; + bool suppress =false; + bool shin=false; + char screenoutput [1000]; + int i; + + //lists to track bad textures and shaders. + badlist bad_textures; + badlist bad_shaders; + + //list to track meshes using bad shaders and meshes over 500 polys + outputbuffer* p_mesh_ref=new outputbuffer; + outputbuffer* p_polycount=new outputbuffer; + + + tlDataChunk::RegisterDefaultChunks(); + + //processes arguements + + //no options + if (argc ==1) + { + printf("usage:artchecker filename <strict> \n"); + exit (1); + } + + + filename= argv[1]; + debugstring(filename); + + + for (i=2;i<argc;i++) + { + arguements[i]=argv[i]; + + // user set strict + if (strcmp(arguements[i],"strict")== 0) + { + strict =true; + debugstring("strict option set"); + break; + } + + //user set add + + else if (strcmp (arguements[i],"add")==0) + { + add=true; + debugstring("add option set"); + break; + } + + else if (strcmp (arguements[i],"sum")==0) + { + suppress =true; + break; + } + + else if (strcmp (arguements[i],"all")==0) + { + showall =true; + break; + } + + else if (strcmp (arguements[i],"shin")==0) + { + shin =true; + break; + } + //illegal option + else + { + printf("%s is an illegal option \n",arguements[i]); + exit (1); + } + + + } //end for + + //have the pure3d file name + + tlFile input(new tlFileByteStream(filename,omREAD), tlFile::FROMFILE); + if(!input.IsOpen()) + { + printf("Could not open %s\n", filename); + exit(-6); + } + + printf("Processing Filename: %s\n",filename); + + //desend into the file and look at each object until no more objects left + + // make a tlDataChunk from the file + // this is the wrapper chunk for the input + tlDataChunk* inchunk = new tlDataChunk(&input); + // we don't need the tlFile anymore + // this cleans up the tlFile object including the + // tlFileByteStream + //printf("Fucking CLose! \n"); + input.Close(); + + //printf("Closing File proceeding.\n"); + + //lists to track memory stats for various components. + badlist texturestats(inchunk->SubChunkCount()); + badlist animationstats(inchunk->SubChunkCount()); + badlist meshstats(inchunk->SubChunkCount()); + + // build an output chunk + tlDataChunk* outchunk = new tlDataChunk; + int ch; + + static int counter =0; + + //connect to the DB + + + //setup artrb variables + bool dbconnect=false; +// char querybuffer [1000]; +// Row row; + + + + + //creat connection and query + //Connection con (use_exceptions); + //Query query=con.query( ); + //dbconnect=con.connect ("srr2test","radit","root","custom47"); +/* + if (dbconnect == true) + { + printf("Connection to Artdb established proceeding.\n"); + } + else + { + printf("Cant connection to art db \n"); + exit (1); + } +*/ + //printf("Counting chunks !\n"); + + // go through all the sub-chunks of the input and + // process the ones you care about + for(ch=0; ch < inchunk->SubChunkCount(); ch++) + { + //printf("Processing Chunks, #%d \n",ch); + // create the next sub-chunk + tlDataChunk* sub = inchunk->GetSubChunk(ch); + + // look at the id of the subchunk to decide if we + // want to do something with it or not + switch(sub->ID()) + { + + + case Pure3D::Texture::TEXTURE: + { + //temp variables + tlTexture* p_texture = new tlTexture (); + tlImage* p_image2d ; + texture_data mytexture; + unsigned int texturememsize =0; + + //printf("texuture name: %s \n",p_texture->GetName()); + + int chunkcount1,chunkcount2; + + for (chunkcount1 =0;chunkcount1<sub->SubChunkCount();chunkcount1++) + { + tlDataChunk* sub1=sub->GetSubChunk(chunkcount1); + + switch(sub1->ID()) + { + case Pure3D::Texture::IMAGE: + { + for (chunkcount2=0;chunkcount2<sub1->SubChunkCount();chunkcount2++) + { + tlDataChunk* sub2=sub1->GetSubChunk(chunkcount2); + switch (sub2->ID()) + { + case Pure3D::Texture::IMAGE_DATA: + { + tlImageDataChunk* p_imagedatachunk = (tlImageDataChunk*) sub2; + texturememsize += p_imagedatachunk->GetImageDataSize(); + //printf("%u bytes \n", p_imagedatachunk->GetImageDataSize()); + } + } + }//end for + + }//end case + }//end switch + + }//end outer for loop. + + + + + p_texture->LoadFromChunk(sub); + + //cout<<"Checking for "<<p_texture->GetName()<<" Texture "; + p_image2d = p_texture->GetImage(0); + + //fill in texture struct. + strcpy(mytexture.name,p_texture->GetName()); + mytexture.height=p_texture->GetHeight(); + mytexture.width=p_texture->GetWidth(); + mytexture.bpp=p_image2d->GetBpp(); + mytexture.alpha=p_texture->GetAlphaDepth(); + + texturestats.add(p_texture->GetName(),1,texturememsize); + + //texture check + if (texturelookup (mytexture,add,strict,showall,bad_textures,suppress) ) // + { + badart= true; + } + + /* + cout<<"Height: "<<p_image2d->GetHeight(); + cout<<"Width: "<<p_image2d->GetWidth(); + cout<<"Bpp: "<<mytexture.bpp; + cout<<"Alpha: "<<mytexture.alpha; + cout<<endl; + */ + + delete p_texture; + outchunk->AppendSubChunk(sub,FALSE); + break; + } + + case Pure3D::Shader::SHADER: + { + + shader_data myshader; + tlShader* p_shader =new tlShader (); + p_shader->LoadFromChunk(sub); + + //get data for myshader + + strcpy(myshader.name,p_shader->GetName()); + myshader.lit=p_shader->GetIntParam("LIT"); + myshader.twosid=p_shader->GetIntParam("2SID"); + + //cout<<"Checking for "<<myshader.name<<" Shader "; + + + if (p_shader->GetFloatParam("SHIN") > 0.0 ) + { + if (shin) + { + printf("Shader: %s has shinyness %f greater than 0.0!!!\n",p_shader->GetName(),p_shader->GetFloatParam("SHIN")); + //printf("Shader: %s has shinyness %f greater than 0.0!!!, Setting it to 0.0\n",p_shader->GetName(),p_shader->GetFloatParam("SHIN")); + //p_shader->SetFloatParam("SHIN",0.0); + } + } + + + if( strcmp ("lambert",p_shader->GetShaderType() )==0) + { + printf(" =====> ERROR: %s is of type Lambert, SOMEONE is GETTING the BEATS ! \n",myshader.name); + badart=true; + } + + if (p_shader->GetIntParam("2SID") == 0) + { + //printf("%-30s Shader: =====>Warning : Double Sided FLAG is 0!\n",p_shader->GetName()); + //p_shader->SetIntParam("2SID",1); + //error=true; + } + + if(shaderlookup(&myshader,add,strict,showall,bad_shaders,suppress)) + { + badart=true; + } + + tlDataChunk* p_chunk=p_shader->Chunk(); + delete p_shader; + outchunk->AppendSubChunk(p_chunk); + break; + } + case SRR2::ChunkID::ENTITY_DSG: + { + tlDataChunk* p_temp = sub->GetSubChunk(0); + + + tlMeshChunk* p_mesh = (tlMeshChunk* ) p_temp; + tlPrimGroup* p_primgroup = new tlPrimGroup (); + unsigned int vertexmemsize =0; + p_primgroup->LoadFromChunk(p_mesh->GetSubChunk(0)); + + if( p_primgroup->GetTriangleCount() >MAX_POLYCOUNT) + { + if(p_primgroup->GetType() == PDDI_PRIM_TRIANGLES) + { + sprintf(screenoutput,"%-30s mesh => Polycount : %6d \n",p_mesh->GetName(),p_primgroup->GetTriangleCount()); + } + + if(p_primgroup->GetType() == PDDI_PRIM_TRISTRIP) + { + sprintf(screenoutput,"%-30s mesh => Polycount Tristriped: %6d \n",p_mesh->GetName(),p_primgroup->GetTriangleCount()); + } + + //cout<< p_primgroup->GetTriangleCount()<<endl; + //printf("%-30s mesh => Polycount: %6d \n",p_mesh->GetName(),p_primgroup->GetTriangleCount()); + p_polycount->add(screenoutput); + } + + if(p_primgroup->GetVertexType()==8209) + { + //printf("ERROR: %s mesh HAS NO CVB lighting INFO!\n",p_mesh->GetName()); + sprintf(screenoutput,"%-30s =====>ERROR: Mesh has No CBV (Color by Vertex) Lighting INFO! ", p_mesh->GetName()); + p_mesh_ref->add(screenoutput); + badart=true; + } + + if (bad_shaders.inlist(p_primgroup->GetShader( ) )) + { + sprintf(screenoutput,"%-30s =====>ERROR: Referencing bad shader : %-30s", p_mesh->GetName(), p_primgroup->GetShader()); + p_mesh_ref->add(screenoutput); + badart =true; + } + + delete p_primgroup; + + + + // memory checkfunctionality + int chunkcount1,chunkcount2; + + for (chunkcount1 =0;chunkcount1<p_temp->SubChunkCount();chunkcount1++) + { + tlDataChunk* sub1=p_temp->GetSubChunk(chunkcount1); + + switch(sub1->ID()) + { + case Pure3D::Mesh::PRIMGROUP: + { + for (chunkcount2=0;chunkcount2<sub1->SubChunkCount();chunkcount2++) + { + tlDataChunk* sub2=sub1->GetSubChunk(chunkcount2); + switch (sub2->ID()) + { + case Pure3D::Mesh::MEMORYIMAGEVERTEXLIST: + { + tlPrimGroupMemoryImageVertexChunk* p_vertexmemorychunk = (tlPrimGroupMemoryImageVertexChunk*) sub2; + vertexmemsize = p_vertexmemorychunk->GetMemoryImageVertexSize(); + //printf("%u bytes \n", p_vertexmemorychunk->GetMemoryImageVertexSize()); + } + } + }//end for + + }//end case + }//end switch + + }//end outer for loop. + + + meshstats.add(p_mesh->GetName(),1,vertexmemsize); + outchunk->AppendSubChunk(sub,FALSE); + break; + + } + + + + case Pure3D::Mesh::MESH: + { + counter++; + + tlDataChunk* p_sub =NULL; + + unsigned int i = 0; + p_sub = sub->GetSubChunk(i); + + while (p_sub ->ID( ) == Pure3D::Mesh::PRIMGROUP ) + { + tlMeshChunk* p_mesh = (tlMeshChunk* ) sub; + tlPrimGroup* p_primgroup = new tlPrimGroup (); + unsigned int vertexmemsize =0; + p_primgroup->LoadFromChunk(p_mesh->GetSubChunk(i)); + + if( p_primgroup->GetTriangleCount() >MAX_POLYCOUNT) + { + + if(p_primgroup->GetType() == PDDI_PRIM_TRIANGLES) + { + sprintf(screenoutput,"%-30s mesh => Polycount : %6d \n",p_mesh->GetName(),p_primgroup->GetTriangleCount()); + p_polycount->add(screenoutput); + } + + if(p_primgroup->GetType() == PDDI_PRIM_TRISTRIP) + { + sprintf(screenoutput,"%-30s mesh => Polycount Tristriped: %6d \n",p_mesh->GetName(),p_primgroup->GetTriangleCount()); + p_polycount->add(screenoutput); + } + } + + if(p_primgroup->GetVertexType()==8209) + { + sprintf(screenoutput,"%-30s =====>ERROR: Mesh has No CBV (Color by Vertex) Lighting INFO! ", p_mesh->GetName()); + p_mesh_ref->add(screenoutput); + badart=true; + } + + //hack to make every 3rd shader be char swatch. + if (counter == 3) + { + counter =0; + p_primgroup->SetShader("char_swatch_m"); + } + + if (bad_shaders.inlist(p_primgroup->GetShader( ) )) + { + sprintf(screenoutput,"%-30s =====>ERROR: Referencing bad shader : %-30s", p_mesh->GetName(), p_primgroup->GetShader()); + p_mesh_ref->add(screenoutput); + badart=true; + } + + delete p_primgroup; + i++; + + + + // memory checkfunctionality + int chunkcount1,chunkcount2; + + for (chunkcount1 =0;chunkcount1<sub->SubChunkCount();chunkcount1++) + { + tlDataChunk* sub1=sub->GetSubChunk(chunkcount1); + + switch(sub1->ID()) + { + case Pure3D::Mesh::PRIMGROUP: + { + for (chunkcount2=0;chunkcount2<sub1->SubChunkCount();chunkcount2++) + { + tlDataChunk* sub2=sub1->GetSubChunk(chunkcount2); + switch (sub2->ID()) + { + case Pure3D::Mesh::MEMORYIMAGEVERTEXLIST: + { + tlPrimGroupMemoryImageVertexChunk* p_vertexmemorychunk = (tlPrimGroupMemoryImageVertexChunk*) sub2; + vertexmemsize = p_vertexmemorychunk->GetMemoryImageVertexSize(); + //printf("%u bytes \n", p_vertexmemorychunk->GetMemoryImageVertexSize()); + } + } + }//end for + + }//end case + }//end switch + + }//end outer for loop. + + + meshstats.add(p_mesh->GetName(),1,vertexmemsize); + outchunk->AppendSubChunk(sub,FALSE); + p_sub = sub->GetSubChunk(i); + }//end while loop + break; + } + case Pure3D::Animation::AnimationData::ANIMATION: + { + + unsigned int animationmemsize =0; + int chunkcount1; + + for (chunkcount1 =0;chunkcount1<sub->SubChunkCount();chunkcount1++) + { + tlDataChunk* sub1=sub->GetSubChunk(chunkcount1); + + switch(sub1->ID()) + { + case Pure3D::Animation::AnimationData::SIZE: + { + + tlAnimationSizeChunk* p_animationsizechunk = (tlAnimationSizeChunk*) sub1; + animationmemsize = p_animationsizechunk->GetPS2(); + //printf("%u bytes \n", p_animationsizechunk->GetPS2()); + + }//end case + }//end switch + }//end outer for loop. + + //printf("name: %s , %u bytes \n",sub->GetName(),animationmemsize); + animationstats.add(sub->GetName(),1,animationmemsize); + outchunk->AppendSubChunk(sub,FALSE); + break; + + } + + /* + case Simulation::Collision::OBJECT: + { + //temp local variables + + tlCollisionObjectChunk* p_collisionobject= (tlCollisionObjectChunk*)sub; + bv_data bv_object; + char source_name[max_length]; + char object_name1[max_length]; + char object_name2[max_length]; + + + //cout<<"Checking "<<p_collisionobject->GetName()<<" Collision Object "<< endl; + + //get the name of collision object + strcpy(source_name,p_collisionobject->GetName()); + //cout<<"Source name: "<<source_name<<endl; + + //smash up string to remove the number appended by Maya + strcpy(object_name1,strtok(source_name,"_")); + strcpy(object_name2,strtok(NULL,"_")); + + //reform string + strcat(object_name1,"_"); + strcat(object_name1,object_name2); + + + //set default vaules + strcpy(bv_object.name,object_name1); + bv_object.classtype=0; + bv_object.physpropid=0; + + //cout<<"New concated string: " <<object_name1<<endl; + + + if(bvobjectlookup(&bv_object,query,add,strict,showall)) + { + badart=true; + } + + //creating object attribute chunk + + tlObjectAttributeChunk* p_otc =new tlObjectAttributeChunk (); + p_otc->SetClassType(bv_object.classtype); + p_otc->SetPhyPropID(bv_object.physpropid); + + tlPhysWrapperChunk* p_physwrapper = new tlPhysWrapperChunk (); + p_physwrapper->SetName(p_collisionobject->GetName()); + + //append the chunks + //p_physwrapper->AppendSubChunk(p_otc); + //p_physwrapper->AppendSubChunk(sub, FALSE); + outchunk->AppendSubChunk(sub,FALSE); + break; + } + + + */ + case StateProp::STATEPROP: + { + printf("This File:%s contains a stateprop \n",filename); + break; + } + default: + { + // this is not a chunk that we care about + // so simply copy it to the output wrapper chunk + // the optional parameter to AppendSubChunk + // indicates that we have merely copied a pointer + // so the destructor of outchunk should not + // destroy this sub-chunk as that duty will be + // taken care of by the destructor of inchunk + outchunk->AppendSubChunk(sub,FALSE); + break; + + } + }//end switch + }//end for + + //record objects stats faking art object + art_object target_object; + strcpy(target_object.name,"devil car"); + + target_object.art_properties.vertex_count= 453; + target_object.art_properties.poly_count=2345; + target_object.art_properties.animation_frames=25; + target_object.art_properties.bone_count=35; + target_object.art_properties.shader_count=14; + +/* + if( artobjectlookup(&target_object,query,add,strict) ) + { + cout<<"Art object:" <<target_object.name<< " has failed art check\n "; + //exit (1); + } + +*/ + //check for shaders and textures are + + + //all is good add physic proporties + + shader_data hmm; + + strcpy(hmm.name,"trunk"); + hmm.lit=false; +/* + if (shaderlookup(&hmm,query,add,strict)) + { + cout<<hmm.name<<"not in art db \n"; + //exit (1); + } +*/ + + +//} + //end of try + +// catch (BadQuery er) + { + // cout<<"Error: " <<er.error<< endl; + // return 1; + } + + if (badart) + { + printf("\n"); + printf("\n"); + + printf("***** SUMMARY ******* \n"); + fprintf(stdout,"ERROR: %-15s contains BAD ART and has FAILED Artchecker! \n",filename); + + // cleanup the no-longer-needed wrapper chunks + + printf("Total Memory size of Textures: %20u bytes in %9u textures \n",texturestats.getsize(),texturestats.getindexcount()); + printf("Total Memory size of Animations: %20u bytes in %9u animations \n",animationstats.getsize(),animationstats.getindexcount()); + printf("Total Memory size of Meshes: %20u bytes in %9u meshes \n",meshstats.getsize(),meshstats.getindexcount()); + + printf("***** END OF SUMMARY ******* \n"); + printf("\n"); + + + if(!suppress) + { + printf("\n"); + printf("\n"); + printf("***** Bad Meshes *******\n"); + p_mesh_ref->print(); + printf("\n"); + printf("***** HIGH POLY Meshes *******\n"); + p_polycount->print(); + printf("\n"); + } + if(showall) + { + printf("\n"); + printf("***** Texture Breakdown *******\n"); + texturestats.printverbose(); + printf("\n"); + printf("***** Animation Breakdown *******\n"); + animationstats.printverbose(); + printf("\n"); + printf("***** Meshes Breakdown *******\n"); + meshstats.printverbose(); + printf("\n"); + + } + delete p_mesh_ref ; + delete p_polycount; + + /* + // create the new output file + tlFile output(new tlFileByteStream(filename, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + printf("Could not open %s for writing,unable to Save\n", filename); + exit(-1); + } + + // get the output wrapper chunk to write its data out + // to the file + outchunk->Write(&output); +*/ + + delete inchunk; + delete outchunk; + return 1; + } + else + { + +/* + // create the new output file + tlFile output(new tlFileByteStream(filename, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + printf("Could not open %s for writing\n", filename); + exit(-1); + } +*/ + // get the output wrapper chunk to write its data out + // to the file + // outchunk->Write(&output); + + + // cleanup the no-longer-needed wrapper chunks + delete inchunk; + delete outchunk; + delete p_mesh_ref; + delete p_polycount; + printf("\n"); + printf("\n"); + printf("\n"); + + printf("***** SUMMARY ******* \n"); + printf("\n"); + fprintf(stdout,"Filename:%-15s PASSED Artchecker. \n",filename); + printf("\n"); + + // cleanup the no-longer-needed wrapper chunks + + printf("Total Memory size of Textures: %20u bytes in %9u textures \n",texturestats.getsize(),texturestats.getindexcount()); + printf("Total Memory size of Animations: %20u bytes in %9u animations \n",animationstats.getsize(),animationstats.getindexcount()); + printf("Total Memory size of Meshes: %20u bytes in %9u meshes \n",meshstats.getsize(),meshstats.getindexcount()); + + printf("***** END OF SUMMARY ******* \n"); + + if(showall) + { + printf("\n"); + printf("***** Texture Breakdown *******\n"); + texturestats.printverbose(); + printf("\n"); + printf("***** Animation Breakdown *******\n"); + animationstats.printverbose(); + printf("\n"); + printf("***** Meshes Breakdown *******\n"); + meshstats.printverbose(); + printf("\n"); + + } + return 0; + } +} //end of main + + +//******************************************** +// Function Bodies +//******************************************** + +//helper function to print error messages +void debugstring (char * message) +{ +#ifdef DEBUG + cout<<message<<endl; +#endif +} + + +//helper funtion to check texutre return 0 if texture matches db ,1 if their is a mismatch or error +int texturelookup(const texture_data& texturedata, bool add, bool strict,bool showall,badlist& badtextures,bool suppress) //badlist* p_badtextures +{ + bool error=false ; + //char querybuffer [1000]; + char output [1000]; +// Result::iterator sql_iterator; +// Row row; + outputbuffer texture_errors; + + //sprintf(querybuffer, "SELECT * FROM textures WHERE name = '%s' ",texturedata.name); + //query<< querybuffer; + //Result myresult= query.store ( ); + + + + //cant find texture in the database + //if (myresult.size ( ) ==0 ) + if (1) + { + + if ( add == true) + { + //add object to the DB + cout<< "Adding:" << texturedata.name << " texture to the ArtDB \n"; + + //todo add stuff here + } + //texture not found in the the DB + + if (strict) + { + //cout<<",Not Found !" <<endl; + sprintf(output," ERROR :%s texture not found in the ArtDB",texturedata.name); + texture_errors.add(output); + //cout<<"ERROR :"<<texturedata.name<< " texture not found in the ArtDB \n"; + error = true; + } + + //check texture attributes against the default limits + + //check against art limits + if(texturedata.height>MAX_TEXTURE_SIZE) + { + error=true; + sprintf(output," ERROR : %u Height exceeds Max Texture SIZE OF %u",texturedata.height,MAX_TEXTURE_SIZE); + texture_errors.add(output); + // cout<<" =====>Warning "<<texturedata.name<<" : "<< texturedata.height << " Height exceeds Max Texture SIZE OF "<<MAX_TEXTURE_SIZE<<endl; + } + + if(texturedata.width>MAX_TEXTURE_SIZE) + { + error=true; + sprintf(output," ERROR : %u Width exceeds Max Texture SIZE OF %u",texturedata.width,MAX_TEXTURE_SIZE); + texture_errors.add(output); + // cout<<" =====>Warning "<<texturedata.name<<": "<< texturedata.width << " Width exceeds Max Texture SIZE OF "<<MAX_TEXTURE_SIZE<<endl; + } + + if(texturedata.bpp>MAX_BPP) + { + error=true; + sprintf(output," ERROR : %u BPP exceeds Max BPP SIZE OF %u",texturedata.bpp,MAX_BPP); + texture_errors.add(output); + //cout<<" =====>Warning "<<texturedata.name<<": "<< texturedata.bpp << " BPP exceeds Max BPP SIZE OF "<<MAX_BPP<<endl; + } + // cout<<" Warning :"<<texturedata.name<< " texture not found in the ArtDB \n"; + + }//end if in artdb block + + //if(myresult.size()!=0) + if(0) + { + //cout <<",Found . " << endl; + + /* + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + + row =*sql_iterator; + int height= row["height"]; + int width=row["width"]; + int bpp=row["bpp"]; + int alpha=row["alphabits"]; + + + //check texture height + if( texturedata.height > height) + { + if (strict) + { + error=true; + sprintf(output," ERROR :Texture height %u exceeds expected %u",texturedata.height,height); + texture_errors.add(output); + } + else + { + sprintf(output," Warning :Texture height %u exceeds expected %u",texturedata.height,height); + texture_errors.add(output); + } + }//end if + + //check width + if( texturedata.width > width) + { + if (strict) + { + error=true; + sprintf(output," ERROR :Texture width %u exceeds expected %u",texturedata.width,width); + texture_errors.add(output); + } + else + { + sprintf(output," Warning :Texture width %u exceeds expected %u",texturedata.width,width); + texture_errors.add(output); + } + }//end if + + //check bpp + if( texturedata.bpp > bpp) + { + if (strict) + { + error=true; + sprintf(output," ERROR :Texture BPP %u exceeds expected %u",texturedata.bpp,bpp); + texture_errors.add(output); + } + else + { + sprintf(output," Warning :Texture BPP %u exceeds expected %u",texturedata.bpp,bpp); + texture_errors.add(output); + } + }//end if + + + + + //just printing out the rows + //for (int j=0;j<row.size ( ); j++) + //{ + // cout<< "[" << row[j] << "]" ; + //} + //cout<<endl; + + }//end for iterator loop + + */ + + }//end if found in the Artdb block + + + + + if (error) + { + if(!suppress) + { + printf("\n"); + printf("%s Texture:\n",texturedata.name); + texture_errors.print(); + printf("\n"); + } + badtextures.add(texturedata.name,1,0); + return 1; + } + else + { + return 0; + } + +}// end texture lookup + + +//helper funtion to check shader, returns 0 if shader matches db ,1 if their is a mismatch +int shaderlookup(shader_data* lp_shaderdata, bool add, bool strict,bool showall,badlist& badshaders,bool suppress) +{ + + bool error=false; + char querybuffer [1000]; + char output [1000]; + //Result::iterator sql_iterator; + //Row row; + outputbuffer shader_errors; + sprintf(querybuffer, "SELECT * FROM shaders WHERE name = '%s' ",lp_shaderdata->name); + //query<< querybuffer; + //Result myresult= query.store ( ); + + +// if (myresult.size ( ) ==0 ) + if (1) + { + + if ( add == true) + { + //add object to the DB + printf("Adding: %s shader to the ArtDB \n",lp_shaderdata->name); + //todo add stuff here + } + + if (strict) + { + sprintf(output," ERROR: %s Shader not found in the ArtDB",lp_shaderdata->name); + shader_errors.add(output); + } + + //check for lit + if ( lp_shaderdata->lit) + { + shader_errors.add(" =====>ERROR : LIT shader FOUND!"); + error = true; + + if(badshaders.inlist(lp_shaderdata->name) ==0) + { + badshaders.add(lp_shaderdata->name,1,0); + } + } +/* + if ((lp_shaderdata->twosid) == 0) + { + shader_errors.add(" =====>Warning : Double Sided FLAG is 0!"); + error=true; + } + + */ + + }//end if shader in artdb check + + //cout << "Records Found: " << myresult.size() << endl ; +/* + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + row =*sql_iterator; + + //just printing out the rows + for (int j=0;j<row.size ( ); j++) + { + cout<< "[" << row[j] << "]" ; + } + cout<<endl; + }//end for iterator loop +*/ + + if (error) + { + if(!suppress) + { + + printf("\n"); + printf("%s shader : \n",lp_shaderdata->name); + shader_errors.print(); + } + if(strict) + { + return 1; + } + else + { + return 0; + } + } + else + { + return 0; + } + +}// end shader lookup + +/* + + +//helper funtion to check object, returns 0 if shader matches db ,1 if their is a mismatch +int artobjectlookup(art_object* lp_artobject, Query& query,bool add, bool strict,bool showall,bool suppress) +{ + + char querybuffer [1000]; + Result::iterator sql_iterator; + Row row; + unsigned int artpropid,shaderid; + bool error= false; + + //setup a query to artdb ask if object is in Artdb + + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",lp_artobject->name); + query<< querybuffer; + Result myresult= query.store ( ); + //cout << "Records Found: " << myresult.size() << endl ; + + //if result size is zero, object not found + //if ( myresult.size ( ) ==0 ) + if(1) + { + if ( add == true) + { + //add object to the DB + cout<< "Adding:" << lp_artobject->name << " to the ArtDB \n"; + //todo add stuff here + + return 0; + } + //object not found in the the DB halt + else + { + if (strict) + { + printf("ERROR: %s object not found in the ArtDB, \n",lp_artobject->name); + error =true; + } + else + { + printf("Warning:%s object not found in the ArtDB \n",lp_artobject->name); + } + } + }//end if object in artdb check + + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + row =*sql_iterator; + artpropid = row["artpropid"]; + shaderid = row["shaderid"]; + //just printing out the rows + for (int j=0;j<row.size ( ); j++) + { + cout<< "[" << row[j] << "]" ; + } + cout<<endl; + }//end for iterator loop + + + //check check the art proporties if less than max vertices,etc then we ok + sprintf(querybuffer, "SELECT * FROM artprops WHERE id = '%i' ",artpropid); + query<< querybuffer; + myresult= query.store ( ); + + cout << "Records Found: " << myresult.size() << endl ; + //check if artprops in the ArtDB + //if ( myresult.size ( ) ==0 ) + if(1) + { + if ( add == true) + { + //add object to the DB + cout<< "Adding:" <<lp_artobject->name << " art props to the ArtDB \n"; + cout<< "Adding: Artprops to artdb \n"; + return 0; + + //todo add stuff here + } + + //object not found in the the DB halt + else + { + if (strict) + { + cout<<"ERROR: "<<lp_artobject->name<< " Art properties not found in the ArtDB, Halting \n"; + error=true; + } + else + { + cout<<"Warning: "<<lp_artobject->name<< " Art properties not found in the ArtDB, using default physic properties\n"; + }//end else + }//end else + }//end if + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + row =*sql_iterator; + + unsigned int vertexcount,polycount,shadercount,bonecount,animationframes; + vertexcount=row["VertexCount"]; + polycount=row["PolyCount"]; + shadercount=row["ShaderCount"]; + bonecount=row["BoneCount"]; + animationframes=row["Animframes"]; + + if (strict) + { + if( lp_artobject->art_properties.vertex_count > vertexcount) + { + cout<<"ERROR:"<< lp_artobject->name<<" has exceeded " << row["VertexCount"]<<" Vertexcount, HALTING \n"; + error =true; + } + + if( lp_artobject->art_properties.poly_count > polycount) + { + cout<<"ERROR:"<< lp_artobject->name<<" has exceeded " << row["PolyCount"]<<" Polycount, HALTING \n"; + error =true; + } + + if( lp_artobject->art_properties.animation_frames > animationframes) + { + cout<<"ERROR:"<< lp_artobject->name<<" has exceeded " << row["AnimFrames"]<< " Animation frames, HALTING \n"; + error =true; + } + + if( lp_artobject->art_properties.bone_count > bonecount) + { + cout<<"ERROR:"<< lp_artobject->name<<" has exceeded " << row["BoneCount"]<<" Bonecount, HALTING \n"; + error =true; + } + + if( lp_artobject->art_properties.shader_count > shadercount) + { + cout<<"ERROR:"<< lp_artobject->name<<" has exceeded " << row["ShaderCount"]<<" Shadercount, HALTING\n"; + error =true; + } + }//end if artprops check + else + { + if( lp_artobject->art_properties.vertex_count > vertexcount) + { + cout<<"Warning:"<< lp_artobject->name<<" has exceeded " << row["VertexCount"]<<" Vertexcount \n"; + } + + if( lp_artobject->art_properties.poly_count > polycount) + { + cout<<"Warning:"<< lp_artobject->name<<" has exceeded " << row["PolyCount"]<<" Polycount \n"; + } + + if( lp_artobject->art_properties.animation_frames > animationframes) + { + cout<<"Warning:"<< lp_artobject->name<<" has exceeded " << row["AnimFrames"]<< " Animation frames \n"; + } + + if( lp_artobject->art_properties.bone_count > bonecount) + { + cout<<"Warning:"<< lp_artobject->name<<" has exceeded " << row["BoneCount"]<<" Bonecount \n"; + } + + if( lp_artobject->art_properties.shader_count > shadercount) + { + cout<<"Warning:"<< lp_artobject->name<<" has exceeded " << row["ShaderCount"]<<" Shadercount \n"; + } + }// end else artprops check + + + + }//for loop end artobjectlookup + + + //printing art props + + for (int j=0;j<row.size ( ); j++) + { + cout<< "[" << row[j] << "]" ; + } + + + printf("\n"); + + if (error) + { + return 1; + } + else + { + return 0; + } + +}//end artobject lookup + + +//************************************************************************* +// Check's if root of Bound Volume exists, if not then treats it as a strict object + +int bvobjectlookup(bv_data* lp_bvobject,Query& query,bool add,bool strict,bool showall,bool suppress) +{ + bool errors =false; + char querybuffer [1000]; + char output[1000]; + outputbuffer bv_errors; + Result::iterator sql_iterator; + Row row; + + + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",lp_bvobject->name); + query<< querybuffer; + Result myresult= query.store ( ); + + + if (myresult.size ( ) ==0 ) + { + if ( add == true) + { + //add object to the DB + //cout<< "Adding:" << lp_shaderdata->name << " shader to the ArtDB \n"; + + //todo add stuff here + } + //object not found in the the DB halt + else + { + if (strict) + { + sprintf(output,"ERROR: %s object not found in the ArtDB \n",lp_bvobject->name); + bv_errors.add(output); + //cout<<" ERROR:"<<lp_bvobject->name<< " object not found in the ArtDB \n"; + //return 1; + errors =true; + } + else + { + errors =true; + sprintf(output,"Warning: %s object not found in the ArtDB , using defaults vaules for ObjectAttributeChunk \n",lp_bvobject->name); + bv_errors.add(output); + //cout<<" Warning:"<<lp_bvobject->name<< " bv object not found in the ArtDB, using defaults vaules for ObjectAttributeChunk \n"; + lp_bvobject->physpropid=0; + lp_bvobject->classtype=2; // set to dsg_static_phys + } + + } + + }//end if object check in artdb check + + // cout << "Records Found: " << myresult.size() << endl ; + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + + row =*sql_iterator; + lp_bvobject->classtype =2; + lp_bvobject->physpropid=row["physpropid"]; + + + //just printing out the rows + for (int j=0;j<row.size ( ); j++) + { + cout<< "[" << row[j] << "]" ; + } + + cout<<endl; + + + }//end for iterator loop + + if (errors) + { + if(strict) + { + bv_errors.print(); + return 1; + } + else + { + if(!suppress) + { + bv_errors.print (); + } + return 0; + } + } + else + { + return 0; + } +}// end of Bv object check + + +*/
\ No newline at end of file diff --git a/tools/ArtChecker/artchecker.dsp b/tools/ArtChecker/artchecker.dsp new file mode 100644 index 0000000..ebb8f83 --- /dev/null +++ b/tools/ArtChecker/artchecker.dsp @@ -0,0 +1,128 @@ +# Microsoft Developer Studio Project File - Name="artchecker" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=artchecker - Win32 Tools Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "artchecker.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "artchecker.mak" CFG="artchecker - Win32 Tools Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "artchecker - Win32 Tools Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "artchecker - Win32 Tools Release" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "artchecker" +# PROP Scc_LocalPath "." +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "artchecker - Win32 Tools Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "artchecker___Win32_Tools_Debug" +# PROP BASE Intermediate_Dir "artchecker___Win32_Tools_Debug" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /GR /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /YX /FD /GZ /c +# ADD CPP /nologo /MD /W3 /GR /GX /ZI /Od /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"C:\mysql++\lib\\" +# SUBTRACT BASE LINK32 /incremental:no +# ADD LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"C:\mysql++\lib\\" +# SUBTRACT LINK32 /incremental:no + +!ELSEIF "$(CFG)" == "artchecker - Win32 Tools Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "artchecker___Win32_Tools_Release" +# PROP BASE Intermediate_Dir "artchecker___Win32_Tools_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RAD_RELEASE" /D "RAD_PC" /D "RAD_WIN32" /FR /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "artchecker - Win32 Tools Debug" +# Name "artchecker - Win32 Tools Release" +# Begin Group "sourcefile" + +# PROP Default_Filter ".cpp" +# Begin Source File + +SOURCE=.\artchecker.cpp +# End Source File +# Begin Source File + +SOURCE=.\artobject.cpp +# End Source File +# Begin Source File + +SOURCE=.\badlist.cpp +# End Source File +# Begin Source File + +SOURCE=.\outputbuffer.cpp +# End Source File +# End Group +# Begin Group "header" + +# PROP Default_Filter ".h" +# Begin Source File + +SOURCE=.\artlimits.h +# End Source File +# Begin Source File + +SOURCE=.\artobject.h +# End Source File +# Begin Source File + +SOURCE=.\badlist.hpp +# End Source File +# Begin Source File + +SOURCE=.\outputbuffer.hpp +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/ArtChecker/artchecker.exe b/tools/ArtChecker/artchecker.exe Binary files differnew file mode 100644 index 0000000..d258eb8 --- /dev/null +++ b/tools/ArtChecker/artchecker.exe diff --git a/tools/ArtChecker/artlimits.h b/tools/ArtChecker/artlimits.h new file mode 100644 index 0000000..a2fb3b5 --- /dev/null +++ b/tools/ArtChecker/artlimits.h @@ -0,0 +1,3 @@ +#define MAX_TEXTURE_SIZE 64 +#define MAX_BPP 8 +#define MAX_POLYCOUNT 500
\ No newline at end of file diff --git a/tools/ArtChecker/artlimits.hpp b/tools/ArtChecker/artlimits.hpp new file mode 100644 index 0000000..f1d00a3 --- /dev/null +++ b/tools/ArtChecker/artlimits.hpp @@ -0,0 +1,2 @@ +#define MAX_TEXTURE_SIZE 256 +#define MAX_BPP 8 diff --git a/tools/ArtChecker/artobject.cpp b/tools/ArtChecker/artobject.cpp new file mode 100644 index 0000000..fcd120d --- /dev/null +++ b/tools/ArtChecker/artobject.cpp @@ -0,0 +1,46 @@ +#include <cstring> +#include "artobject.h" + + +art_object::art_object ( ) +{ + int i,j; + + for (i=0;i<max_shaders;i++) + { + for (j=0;j<max_textures;j++) + { + strcpy(shader_list[i].texture_list[j].name, "no name"); + shader_list[i].texture_list[j].width =0; + shader_list[i].texture_list[j].height =0; + shader_list[i].texture_list[j].bpp =0; + shader_list[i].texture_list[j].alpha =0; + }//end for + + strcpy (shader_list[i].name, "no name"); + shader_list[i].lit =false; + }//end for + + //setting default art vaules + art_properties.vertex_count =0; + art_properties.poly_count =0; + art_properties.animation_frames =0; + art_properties.shader_count =0; + art_properties.bone_count =0; + + //set default art_object vaules + + strcpy(name,"no name"); + +} + +art_object::~art_object( ) +{ + +} + + + + + + diff --git a/tools/ArtChecker/artobject.h b/tools/ArtChecker/artobject.h new file mode 100644 index 0000000..eff09ab --- /dev/null +++ b/tools/ArtChecker/artobject.h @@ -0,0 +1,59 @@ +#define max_length 64 +#define max_textures 3 +#define max_shaders 14 + +struct texture_data +{ + char name[max_length] ; + unsigned int width; + unsigned int height; + unsigned int bpp; + unsigned int alpha; +}; + + +struct shader_data +{ + char name[max_length]; + unsigned int lit; + unsigned int twosid; + + texture_data texture_list[max_textures]; +}; + +struct art_data +{ + unsigned int vertex_count; + unsigned int poly_count; + unsigned int animation_frames; + unsigned int shader_count; + unsigned int bone_count; +}; + + +struct bv_data +{ + char name[max_length]; + unsigned int physpropid; + unsigned int classtype; +}; + + + +class art_object +{ + +public: +//data + shader_data shader_list[max_shaders]; + art_data art_properties; + char name[max_length]; + +//methods + art_object ( ); + ~art_object( ); + +}; + + + diff --git a/tools/ArtChecker/atcmaker.exe b/tools/ArtChecker/atcmaker.exe Binary files differnew file mode 100644 index 0000000..e0390c7 --- /dev/null +++ b/tools/ArtChecker/atcmaker.exe diff --git a/tools/ArtChecker/badlist.cpp b/tools/ArtChecker/badlist.cpp new file mode 100644 index 0000000..bcce4ca --- /dev/null +++ b/tools/ArtChecker/badlist.cpp @@ -0,0 +1,90 @@ +#include "badlist.hpp" +#include <cstring> +#include<stdio.h> + +badlist::badlist () +{ + max_items=200; + data_array=new entity_data[max_items]; + index = 0; + totalmemoryusage =0; + for(unsigned int i=0;i<max_items;i++) + { + strcpy(data_array[i].name," "); + data_array[i].occurances=0; + data_array[i].size=0; + } +} +badlist::badlist (const unsigned int arraysize) +{ + max_items=arraysize; + data_array=new entity_data[max_items]; + index = 0; + totalmemoryusage =0; + for(unsigned int i=0;i<max_items;i++) + { + strcpy(data_array[i].name," "); + data_array[i].occurances=0; + data_array[i].size=0; + } +} + + + + +badlist::~badlist () +{ +} + +int badlist::add(const char* name,const unsigned int occurances,const unsigned int size) +{ + if (index<max_items-1) + { + strcpy( data_array[index].name,name); + data_array[index].occurances=occurances; + data_array[index].size=size; + totalmemoryusage+=size; + index++; + return 0; + } + else + { + return 1; + } +} + +int badlist::inlist(const char* name) +{ + unsigned int i=0; + do + { + if(strcmp(name,data_array[i].name) ==0) + { + //printf("%s found in list \n",name); + return 1; + } + i++; + } while (i<index); + + return 0; +} + +int badlist::getsize() +{ + return totalmemoryusage; +} + +int badlist::getindexcount() +{ + return index; +} + + +int badlist::printverbose() +{ + for (unsigned int i=0;i<index;i++) + { + printf("%-30s: size in bytes: %6i \n",data_array[i].name,data_array[i].size); + } + return 0; +}
\ No newline at end of file diff --git a/tools/ArtChecker/badlist.hpp b/tools/ArtChecker/badlist.hpp new file mode 100644 index 0000000..727ca47 --- /dev/null +++ b/tools/ArtChecker/badlist.hpp @@ -0,0 +1,33 @@ +//#define max_items 200 +struct entity_data +{ + + char name [40]; + unsigned int occurances; + unsigned int size; +}; + + +class badlist +{ + public: + + + int add (const char * name,const unsigned int occurances,const unsigned int size); + int inlist (const char * name); + int getsize(); + int getindexcount(); + int printverbose(); + + badlist (); + badlist (const unsigned int arraysize); + ~badlist(); + + private: + unsigned int max_items; + entity_data* data_array ; + unsigned int index; + unsigned int totalmemoryusage; + +}; + diff --git a/tools/ArtChecker/check.bat b/tools/ArtChecker/check.bat new file mode 100644 index 0000000..6b932aa --- /dev/null +++ b/tools/ArtChecker/check.bat @@ -0,0 +1,2 @@ +@artchecker %1 +@pause
\ No newline at end of file diff --git a/tools/ArtChecker/libmySQL.dll b/tools/ArtChecker/libmySQL.dll Binary files differnew file mode 100644 index 0000000..53c753d --- /dev/null +++ b/tools/ArtChecker/libmySQL.dll diff --git a/tools/ArtChecker/summary.bat b/tools/ArtChecker/summary.bat new file mode 100644 index 0000000..88ca88e --- /dev/null +++ b/tools/ArtChecker/summary.bat @@ -0,0 +1,13 @@ +:// Usage summary <destination filename> +:// example summary myfile.txt + + +dir *.p3d /b> dir.txt + +@perl d:\artchecker\summary.pl dir.txt + +:// ..\..\..\build\ps2\LevelMemoryNumbers.txt + +del dir.txt + + diff --git a/tools/ArtChecker/summary.pl b/tools/ArtChecker/summary.pl new file mode 100644 index 0000000..83ed95d --- /dev/null +++ b/tools/ArtChecker/summary.pl @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +$filename=@ARGV[0]; + +############################################################################## +# MAIN +############################################################################## + +#open file +open(FILE_HANDLE,$filename) || die "Could not open file ERROR: $filename!"; + + +#while not EOF and read in string +while (<FILE_HANDLE>) +{ + $string = $_; + chop($string); + #print $string; + @todo =("artchecker ",$string," sum"); + system (@todo) # == 0 or die "Failed to Execute Artchecker Command !\n"; +} + +close(FILE_HANDLE);
\ No newline at end of file diff --git a/tools/ArtChecker/summaryall.bat b/tools/ArtChecker/summaryall.bat new file mode 100644 index 0000000..648eea5 --- /dev/null +++ b/tools/ArtChecker/summaryall.bat @@ -0,0 +1,13 @@ +:// Usage summary <destination filename> +:// example summary myfile.txt + + +dir *.p3d /b> dir.txt + +@perl d:\artchecker\summaryall.pl dir.txt + +:// ..\..\..\build\ps2\LevelMemoryNumbers.txt + +del dir.txt + + diff --git a/tools/ArtChecker/summaryall.pl b/tools/ArtChecker/summaryall.pl new file mode 100644 index 0000000..e69e131 --- /dev/null +++ b/tools/ArtChecker/summaryall.pl @@ -0,0 +1,23 @@ +#!/usr/bin/perl + +$filename=@ARGV[0]; + +############################################################################## +# MAIN +############################################################################## + +#open file +open(FILE_HANDLE,$filename) || die "Could not open file ERROR: $filename!"; + + +#while not EOF and read in string +while (<FILE_HANDLE>) +{ + $string = $_; + chop($string); + #print $string; + @todo =("artchecker ",$string); + system (@todo) # == 0 or die "Failed to Execute Artchecker Command !\n"; +} + +close(FILE_HANDLE);
\ No newline at end of file diff --git a/tools/Backup/tools.sln b/tools/Backup/tools.sln new file mode 100644 index 0000000..36917a8 --- /dev/null +++ b/tools/Backup/tools.sln @@ -0,0 +1,725 @@ +Microsoft Visual Studio Solution File, Format Version 7.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimCollDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimCollDSGMaker\AnimCollDSGMaker.vcproj", "{2DBC8F99-0223-499F-9AC1-4702EA5DD47B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimDSGMaker\AnimDSGMaker.vcproj", "{FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InstAnimDynaPhysMaker", "..\game\libs\pure3d\tools\commandline\InstAnimDynaPhysMaker\InstAnimDynaPhysMaker.vcproj", "{C8C67032-1BBC-4050-AEAE-2D43AE950C76}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Instancer", "..\game\libs\pure3d\tools\commandline\Instancer\Instancer.vcproj", "{3C294239-15AF-49E2-A5E8-E5CD2785FC3D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LensFlareDSGMaker", "..\game\libs\pure3d\tools\commandline\LensFlareDSGMaker\LensFlareDSGMaker.vcproj", "{B93AEF58-B533-4820-A0D0-1F8E91301129}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MayaRules", "MayaRules\MayaRules.vcproj", "{F456A1E8-974F-4D56-BB57-3D944DF8DCB1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pure3D", "..\game\libs\pure3d\build\win32\Pure3D.vcproj", "{86DA78E6-9FC4-40B7-9E55-390903F2A144}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakablesmaker", "..\game\libs\pure3d\tools\commandline\breakablesmaker\breakablesmaker.vcproj", "{345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chunkGroup", "..\game\libs\pure3d\tools\commandline\chunkGroup\chunkGroup.vcproj", "{E47D996B-68D6-47DE-B640-44B3C0363E6E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert2dxtn", "..\game\libs\pure3d\tools\commandline\convert2dxtn\convert2dxtn.vcproj", "{F7404001-6D28-4698-9BF8-5B26426765EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.vcproj", "{6D333C70-A27D-4E25-AD26-BB9E20558B8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "..\game\libs\pure3d\build\win32\libpng.vcproj", "{D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makechunktool", "..\game\libs\pure3d\tools\commandline\makechunktool\makechunktool.vcproj", "{01A371FA-BA4E-4DC9-B339-4E9552545991}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectsnapper", "objectsnapper\build\objectsnapper.vcproj", "{278283D0-FEC2-4B06-8AED-8DDB745215B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3d2dsg", "..\game\libs\pure3d\tools\commandline\p3d2dsg\p3d2dsg.vcproj", "{B1DD8C69-F562-4275-BE4E-7A6EF727ED30}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddel", "..\game\libs\pure3d\tools\commandline\p3ddel\p3ddel.vcproj", "{A7DFC4D3-FD76-4375-AD16-009BC39A697D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddiff", "..\game\libs\pure3d\tools\gui-win32\p3ddiff\p3ddiff.vcproj", "{84451C74-4E26-4557-9FB8-8C26243DAC55}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dexplorer", "..\game\libs\pure3d\tools\gui-win32\p3dexplorer\p3dexplorer.vcproj", "{72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgc", "..\game\libs\pure3d\tools\commandline\p3dgc\p3dgc.vcproj", "{44AB737E-AA4F-47AA-943B-D2ABA9CB424B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgendsg", "..\game\libs\pure3d\tools\commandline\p3dgendsg\p3dgendsg.vcproj", "{ACF60C5C-93C6-447B-92A2-477AECB0E19C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgeo2prims", "..\game\libs\pure3d\tools\commandline\p3dgeo2prims\p3dgeo2prims.vcproj", "{635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dimage", "..\game\libs\pure3d\tools\commandline\p3dimage\p3dimage.vcproj", "{AFE81408-CC31-4EAF-9597-4931F6C08CED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dmutate", "..\game\libs\pure3d\tools\commandline\p3dmutate\p3dmutate.vcproj", "{A3C2F702-CE80-48D6-9217-E73E93F19F88}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsort", "..\game\libs\pure3d\tools\commandline\p3dsort\p3dsort.vcproj", "{DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsplit", "..\game\libs\pure3d\tools\commandline\p3dsplit\p3dsplit.vcproj", "{4C924B45-1710-4A4D-9D40-CC232B14CD44}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcontent", "..\game\libs\radcontent\build\win32\radcontent.vcproj", "{0C2A1DB4-652B-4F59-BBDC-376E94561647}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcore", "..\game\libs\radcore\build\win32\radcore.vcproj", "{A45F932B-0CF8-41B0-A8FF-1386283E2BE7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radmath", "..\game\libs\radmath\build\win32\radmath.vcproj", "{01B694CE-5AFC-4832-B18E-73AE3E811C74}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "relatedfiles", "relatedfiles\relatedfiles.vcproj", "{EF05D776-F91E-422F-BD64-16B3F5557888}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "roadOptimizer", "..\game\libs\pure3d\tools\commandline\roadOptimizer\roadOptimizer.vcproj", "{37223926-26AB-4BCE-BBEB-191699C3BEF1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib", "..\game\libs\pure3d\toollib\toollib.vcproj", "{8CC3C650-909A-42E8-9039-04697C27C565}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib_extras", "..\game\libs\pure3d\toollib\toollib_extras.vcproj", "{CDB92E4A-1E5D-49A8-8153-34264B3FEF29}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "trackeditor", "trackeditor\build\trackeditor.vcproj", "{8D79E782-9747-4732-A869-CA630AC7D3C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "worldbuilder", "worldbuilder\build\worldbuilder.vcproj", "{B5900135-3859-403D-BC2F-FD90B4C2B2E5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\game\libs\pure3d\build\win32\zlib.vcproj", "{38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dcompdrawopt", "..\game\libs\pure3d\tools\commandline\p3dcompdrawopt\p3dcompdrawopt.vcproj", "{967364EA-F3C7-455E-BBA4-F8B031FB780C}" +EndProject +Global + GlobalSection(SourceCodeControl) = preSolution + SccNumberOfProjects = 37 + SccProjectName0 = Perforce\u0020Project + SccLocalPath0 = . + SccProvider0 = MSSCCI:Perforce\u0020SCM + CanCheckoutShared = true + SolutionUniqueID = {A63DD452-9297-447E-95E4-99D497318CFE} + SccProjectUniqueName1 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimCollDSGMaker\\AnimCollDSGMaker.vcproj + SccLocalPath1 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimCollDSGMaker + CanCheckoutShared = true + SccProjectUniqueName2 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimDSGMaker\\AnimDSGMaker.vcproj + SccLocalPath2 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimDSGMaker + CanCheckoutShared = true + SccProjectUniqueName3 = ..\\game\\libs\\pure3d\\tools\\commandline\\InstAnimDynaPhysMaker\\InstAnimDynaPhysMaker.vcproj + SccLocalPath3 = ..\\game\\libs\\pure3d\\tools\\commandline\\InstAnimDynaPhysMaker + CanCheckoutShared = true + SccProjectUniqueName4 = ..\\game\\libs\\pure3d\\tools\\commandline\\Instancer\\Instancer.vcproj + SccLocalPath4 = ..\\game\\libs\\pure3d\\tools\\commandline\\Instancer + CanCheckoutShared = true + SccProjectUniqueName5 = ..\\game\\libs\\pure3d\\tools\\commandline\\LensFlareDSGMaker\\LensFlareDSGMaker.vcproj + SccLocalPath5 = ..\\game\\libs\\pure3d\\tools\\commandline\\LensFlareDSGMaker + CanCheckoutShared = true + SccProjectUniqueName6 = MayaRules\\MayaRules.vcproj + SccLocalPath6 = . + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection6 = MayaRules\\ + SccProjectUniqueName7 = ..\\game\\libs\\pure3d\\build\\win32\\Pure3D.vcproj + SccLocalPath7 = ..\\game\\libs\\pure3d + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection7 = build\\win32\\ + SccProjectUniqueName8 = ..\\game\\libs\\pure3d\\tools\\commandline\\breakablesmaker\\breakablesmaker.vcproj + SccLocalPath8 = ..\\game\\libs\\pure3d\\tools\\commandline\\breakablesmaker + CanCheckoutShared = true + SccProjectUniqueName9 = ..\\game\\libs\\pure3d\\tools\\commandline\\chunkGroup\\chunkGroup.vcproj + SccLocalPath9 = ..\\game\\libs\\pure3d\\tools\\commandline\\chunkGroup + CanCheckoutShared = true + SccProjectUniqueName10 = ..\\game\\libs\\pure3d\\tools\\commandline\\convert2dxtn\\convert2dxtn.vcproj + SccLocalPath10 = ..\\game\\libs\\pure3d\\tools\\commandline\\convert2dxtn + CanCheckoutShared = true + SccProjectUniqueName11 = ..\\game\\libs\\pure3d\\lib\\freetype\\builds\\win32\\visualc\\freetype.vcproj + SccLocalPath11 = ..\\game\\libs\\pure3d\\lib\\freetype\\builds\\win32\\visualc + CanCheckoutShared = true + SccProjectUniqueName12 = ..\\game\\libs\\pure3d\\build\\win32\\libpng.vcproj + SccLocalPath12 = ..\\game\\libs\\pure3d\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName13 = ..\\game\\libs\\pure3d\\tools\\commandline\\makechunktool\\makechunktool.vcproj + SccLocalPath13 = ..\\game\\libs\\pure3d\\tools\\commandline\\makechunktool + CanCheckoutShared = true + SccProjectUniqueName14 = objectsnapper\\build\\objectsnapper.vcproj + SccLocalPath14 = objectsnapper\\build + CanCheckoutShared = true + SccProjectUniqueName15 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3d2dsg\\p3d2dsg.vcproj + SccLocalPath15 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3d2dsg + CanCheckoutShared = true + SccProjectUniqueName16 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3ddel\\p3ddel.vcproj + SccLocalPath16 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3ddel + CanCheckoutShared = true + SccProjectUniqueName17 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3ddiff\\p3ddiff.vcproj + SccLocalPath17 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3ddiff + CanCheckoutShared = true + SccProjectUniqueName18 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3dexplorer\\p3dexplorer.vcproj + SccLocalPath18 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3dexplorer + CanCheckoutShared = true + SccProjectUniqueName19 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgc\\p3dgc.vcproj + SccLocalPath19 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgc + CanCheckoutShared = true + SccProjectUniqueName20 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgendsg\\p3dgendsg.vcproj + SccLocalPath20 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgendsg + CanCheckoutShared = true + SccProjectUniqueName21 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgeo2prims\\p3dgeo2prims.vcproj + SccLocalPath21 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgeo2prims + CanCheckoutShared = true + SccProjectUniqueName22 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dimage\\p3dimage.vcproj + SccLocalPath22 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dimage + CanCheckoutShared = true + SccProjectUniqueName23 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dmutate\\p3dmutate.vcproj + SccLocalPath23 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dmutate + CanCheckoutShared = true + SccProjectUniqueName24 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsort\\p3dsort.vcproj + SccLocalPath24 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsort + CanCheckoutShared = true + SccProjectUniqueName25 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsplit\\p3dsplit.vcproj + SccLocalPath25 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsplit + CanCheckoutShared = true + SccProjectUniqueName26 = ..\\game\\libs\\radcontent\\build\\win32\\radcontent.vcproj + SccLocalPath26 = ..\\game\\libs\\radcontent + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection26 = build\\win32\\ + SccProjectUniqueName27 = ..\\game\\libs\\radcore\\build\\win32\\radcore.vcproj + SccLocalPath27 = ..\\game\\libs\\radcore + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection27 = build\\win32\\ + SccProjectUniqueName28 = ..\\game\\libs\\radmath\\build\\win32\\radmath.vcproj + SccLocalPath28 = ..\\game\\libs\\radmath\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName29 = relatedfiles\\relatedfiles.vcproj + SccLocalPath29 = relatedfiles + CanCheckoutShared = true + SccProjectUniqueName30 = ..\\game\\libs\\pure3d\\tools\\commandline\\roadOptimizer\\roadOptimizer.vcproj + SccLocalPath30 = ..\\game\\libs\\pure3d\\tools\\commandline\\roadOptimizer + CanCheckoutShared = true + SccProjectUniqueName31 = ..\\game\\libs\\pure3d\\toollib\\toollib.vcproj + SccLocalPath31 = ..\\game\\libs\\pure3d\\toollib + CanCheckoutShared = true + SccProjectUniqueName32 = ..\\game\\libs\\pure3d\\toollib\\toollib_extras.vcproj + SccLocalPath32 = ..\\game\\libs\\pure3d\\toollib + CanCheckoutShared = true + SccProjectUniqueName33 = trackeditor\\build\\trackeditor.vcproj + SccLocalPath33 = trackeditor\\build + CanCheckoutShared = true + SccProjectUniqueName34 = worldbuilder\\build\\worldbuilder.vcproj + SccLocalPath34 = worldbuilder\\build + CanCheckoutShared = true + SccProjectUniqueName35 = ..\\game\\libs\\pure3d\\build\\win32\\zlib.vcproj + SccLocalPath35 = ..\\game\\libs\\pure3d\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName36 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dcompdrawopt\\p3dcompdrawopt.vcproj + SccLocalPath36 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dcompdrawopt + CanCheckoutShared = true + EndGlobalSection + GlobalSection(SolutionConfiguration) = preSolution + ConfigName.0 = Debug + ConfigName.1 = Release + ConfigName.2 = Tools Debug + ConfigName.3 = Tools Release + ConfigName.4 = Tune + EndGlobalSection + GlobalSection(ProjectDependencies) = postSolution + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {F7404001-6D28-4698-9BF8-5B26426765EA}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {F7404001-6D28-4698-9BF8-5B26426765EA}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {F7404001-6D28-4698-9BF8-5B26426765EA}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {F7404001-6D28-4698-9BF8-5B26426765EA}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {F7404001-6D28-4698-9BF8-5B26426765EA}.4 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {F7404001-6D28-4698-9BF8-5B26426765EA}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.2 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.0 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.2 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.4 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.5 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.1 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.2 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.4 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.0 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.1 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.2 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.3 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.4 = {8CC3C650-909A-42E8-9039-04697C27C565} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.2 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.3 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.6 = {0C2A1DB4-652B-4F59-BBDC-376E94561647} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.6 = {86DA78E6-9FC4-40B7-9E55-390903F2A144} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.7 = {0C2A1DB4-652B-4F59-BBDC-376E94561647} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.8 = {A45F932B-0CF8-41B0-A8FF-1386283E2BE7} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.1 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune.Build.0 = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Debug.ActiveCfg = Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Debug.Build.0 = Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Release.ActiveCfg = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Release.Build.0 = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Debug.Build.0 = Tools Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Release.ActiveCfg = Tools Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Release.Build.0 = Tools Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tune.ActiveCfg = Tune|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tune.Build.0 = Tune|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug.ActiveCfg = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release.ActiveCfg = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release.Build.0 = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug.Build.0 = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release.Build.0 = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune.Build.0 = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Debug.ActiveCfg = Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Debug.Build.0 = Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Release.ActiveCfg = Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Release.Build.0 = Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Debug.Build.0 = Tools Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Release.ActiveCfg = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Release.Build.0 = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tune.ActiveCfg = Tune|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tune.Build.0 = Tune|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune.Build.0 = Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune.Build.0 = Tools Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune.Build.0 = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Debug.ActiveCfg = Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Debug.Build.0 = Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Release.ActiveCfg = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Release.Build.0 = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Debug.Build.0 = Tools Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Release.ActiveCfg = Tools Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Release.Build.0 = Tools Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tune.ActiveCfg = Tune|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tune.Build.0 = Tune|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Debug.ActiveCfg = Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Debug.Build.0 = Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Release.ActiveCfg = Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Release.Build.0 = Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Debug.Build.0 = Tools Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Release.ActiveCfg = Tools Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Release.Build.0 = Tools Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tune.ActiveCfg = Tune|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tune.Build.0 = Tune|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Debug.ActiveCfg = Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Debug.Build.0 = Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Release.ActiveCfg = Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Release.Build.0 = Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Debug.Build.0 = Tools Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Release.ActiveCfg = Tools Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Release.Build.0 = Tools Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tune.ActiveCfg = Tune|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tune.Build.0 = Tune|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release.Build.0 = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Release.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune.Build.0 = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Debug.ActiveCfg = Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Debug.Build.0 = Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Release.ActiveCfg = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Release.Build.0 = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Debug.Build.0 = Tools Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Release.ActiveCfg = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Release.Build.0 = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tune.ActiveCfg = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tune.Build.0 = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug.ActiveCfg = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug.Build.0 = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release.ActiveCfg = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release.Build.0 = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug.Build.0 = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release.ActiveCfg = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release.Build.0 = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune.ActiveCfg = Tune|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune.Build.0 = Tune|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune.Build.0 = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Debug.ActiveCfg = Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Debug.Build.0 = Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Release.ActiveCfg = Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Release.Build.0 = Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Debug.Build.0 = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Release.ActiveCfg = Tools Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Release.Build.0 = Tools Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tune.ActiveCfg = Tune|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tune.Build.0 = Tune|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/tools/Backup1/tools.sln b/tools/Backup1/tools.sln new file mode 100644 index 0000000..36917a8 --- /dev/null +++ b/tools/Backup1/tools.sln @@ -0,0 +1,725 @@ +Microsoft Visual Studio Solution File, Format Version 7.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimCollDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimCollDSGMaker\AnimCollDSGMaker.vcproj", "{2DBC8F99-0223-499F-9AC1-4702EA5DD47B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimDSGMaker\AnimDSGMaker.vcproj", "{FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InstAnimDynaPhysMaker", "..\game\libs\pure3d\tools\commandline\InstAnimDynaPhysMaker\InstAnimDynaPhysMaker.vcproj", "{C8C67032-1BBC-4050-AEAE-2D43AE950C76}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Instancer", "..\game\libs\pure3d\tools\commandline\Instancer\Instancer.vcproj", "{3C294239-15AF-49E2-A5E8-E5CD2785FC3D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LensFlareDSGMaker", "..\game\libs\pure3d\tools\commandline\LensFlareDSGMaker\LensFlareDSGMaker.vcproj", "{B93AEF58-B533-4820-A0D0-1F8E91301129}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MayaRules", "MayaRules\MayaRules.vcproj", "{F456A1E8-974F-4D56-BB57-3D944DF8DCB1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pure3D", "..\game\libs\pure3d\build\win32\Pure3D.vcproj", "{86DA78E6-9FC4-40B7-9E55-390903F2A144}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakablesmaker", "..\game\libs\pure3d\tools\commandline\breakablesmaker\breakablesmaker.vcproj", "{345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chunkGroup", "..\game\libs\pure3d\tools\commandline\chunkGroup\chunkGroup.vcproj", "{E47D996B-68D6-47DE-B640-44B3C0363E6E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert2dxtn", "..\game\libs\pure3d\tools\commandline\convert2dxtn\convert2dxtn.vcproj", "{F7404001-6D28-4698-9BF8-5B26426765EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.vcproj", "{6D333C70-A27D-4E25-AD26-BB9E20558B8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "..\game\libs\pure3d\build\win32\libpng.vcproj", "{D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makechunktool", "..\game\libs\pure3d\tools\commandline\makechunktool\makechunktool.vcproj", "{01A371FA-BA4E-4DC9-B339-4E9552545991}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectsnapper", "objectsnapper\build\objectsnapper.vcproj", "{278283D0-FEC2-4B06-8AED-8DDB745215B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3d2dsg", "..\game\libs\pure3d\tools\commandline\p3d2dsg\p3d2dsg.vcproj", "{B1DD8C69-F562-4275-BE4E-7A6EF727ED30}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddel", "..\game\libs\pure3d\tools\commandline\p3ddel\p3ddel.vcproj", "{A7DFC4D3-FD76-4375-AD16-009BC39A697D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddiff", "..\game\libs\pure3d\tools\gui-win32\p3ddiff\p3ddiff.vcproj", "{84451C74-4E26-4557-9FB8-8C26243DAC55}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dexplorer", "..\game\libs\pure3d\tools\gui-win32\p3dexplorer\p3dexplorer.vcproj", "{72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgc", "..\game\libs\pure3d\tools\commandline\p3dgc\p3dgc.vcproj", "{44AB737E-AA4F-47AA-943B-D2ABA9CB424B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgendsg", "..\game\libs\pure3d\tools\commandline\p3dgendsg\p3dgendsg.vcproj", "{ACF60C5C-93C6-447B-92A2-477AECB0E19C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgeo2prims", "..\game\libs\pure3d\tools\commandline\p3dgeo2prims\p3dgeo2prims.vcproj", "{635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dimage", "..\game\libs\pure3d\tools\commandline\p3dimage\p3dimage.vcproj", "{AFE81408-CC31-4EAF-9597-4931F6C08CED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dmutate", "..\game\libs\pure3d\tools\commandline\p3dmutate\p3dmutate.vcproj", "{A3C2F702-CE80-48D6-9217-E73E93F19F88}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsort", "..\game\libs\pure3d\tools\commandline\p3dsort\p3dsort.vcproj", "{DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsplit", "..\game\libs\pure3d\tools\commandline\p3dsplit\p3dsplit.vcproj", "{4C924B45-1710-4A4D-9D40-CC232B14CD44}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcontent", "..\game\libs\radcontent\build\win32\radcontent.vcproj", "{0C2A1DB4-652B-4F59-BBDC-376E94561647}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcore", "..\game\libs\radcore\build\win32\radcore.vcproj", "{A45F932B-0CF8-41B0-A8FF-1386283E2BE7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radmath", "..\game\libs\radmath\build\win32\radmath.vcproj", "{01B694CE-5AFC-4832-B18E-73AE3E811C74}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "relatedfiles", "relatedfiles\relatedfiles.vcproj", "{EF05D776-F91E-422F-BD64-16B3F5557888}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "roadOptimizer", "..\game\libs\pure3d\tools\commandline\roadOptimizer\roadOptimizer.vcproj", "{37223926-26AB-4BCE-BBEB-191699C3BEF1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib", "..\game\libs\pure3d\toollib\toollib.vcproj", "{8CC3C650-909A-42E8-9039-04697C27C565}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib_extras", "..\game\libs\pure3d\toollib\toollib_extras.vcproj", "{CDB92E4A-1E5D-49A8-8153-34264B3FEF29}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "trackeditor", "trackeditor\build\trackeditor.vcproj", "{8D79E782-9747-4732-A869-CA630AC7D3C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "worldbuilder", "worldbuilder\build\worldbuilder.vcproj", "{B5900135-3859-403D-BC2F-FD90B4C2B2E5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\game\libs\pure3d\build\win32\zlib.vcproj", "{38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dcompdrawopt", "..\game\libs\pure3d\tools\commandline\p3dcompdrawopt\p3dcompdrawopt.vcproj", "{967364EA-F3C7-455E-BBA4-F8B031FB780C}" +EndProject +Global + GlobalSection(SourceCodeControl) = preSolution + SccNumberOfProjects = 37 + SccProjectName0 = Perforce\u0020Project + SccLocalPath0 = . + SccProvider0 = MSSCCI:Perforce\u0020SCM + CanCheckoutShared = true + SolutionUniqueID = {A63DD452-9297-447E-95E4-99D497318CFE} + SccProjectUniqueName1 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimCollDSGMaker\\AnimCollDSGMaker.vcproj + SccLocalPath1 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimCollDSGMaker + CanCheckoutShared = true + SccProjectUniqueName2 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimDSGMaker\\AnimDSGMaker.vcproj + SccLocalPath2 = ..\\game\\libs\\pure3d\\tools\\commandline\\AnimDSGMaker + CanCheckoutShared = true + SccProjectUniqueName3 = ..\\game\\libs\\pure3d\\tools\\commandline\\InstAnimDynaPhysMaker\\InstAnimDynaPhysMaker.vcproj + SccLocalPath3 = ..\\game\\libs\\pure3d\\tools\\commandline\\InstAnimDynaPhysMaker + CanCheckoutShared = true + SccProjectUniqueName4 = ..\\game\\libs\\pure3d\\tools\\commandline\\Instancer\\Instancer.vcproj + SccLocalPath4 = ..\\game\\libs\\pure3d\\tools\\commandline\\Instancer + CanCheckoutShared = true + SccProjectUniqueName5 = ..\\game\\libs\\pure3d\\tools\\commandline\\LensFlareDSGMaker\\LensFlareDSGMaker.vcproj + SccLocalPath5 = ..\\game\\libs\\pure3d\\tools\\commandline\\LensFlareDSGMaker + CanCheckoutShared = true + SccProjectUniqueName6 = MayaRules\\MayaRules.vcproj + SccLocalPath6 = . + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection6 = MayaRules\\ + SccProjectUniqueName7 = ..\\game\\libs\\pure3d\\build\\win32\\Pure3D.vcproj + SccLocalPath7 = ..\\game\\libs\\pure3d + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection7 = build\\win32\\ + SccProjectUniqueName8 = ..\\game\\libs\\pure3d\\tools\\commandline\\breakablesmaker\\breakablesmaker.vcproj + SccLocalPath8 = ..\\game\\libs\\pure3d\\tools\\commandline\\breakablesmaker + CanCheckoutShared = true + SccProjectUniqueName9 = ..\\game\\libs\\pure3d\\tools\\commandline\\chunkGroup\\chunkGroup.vcproj + SccLocalPath9 = ..\\game\\libs\\pure3d\\tools\\commandline\\chunkGroup + CanCheckoutShared = true + SccProjectUniqueName10 = ..\\game\\libs\\pure3d\\tools\\commandline\\convert2dxtn\\convert2dxtn.vcproj + SccLocalPath10 = ..\\game\\libs\\pure3d\\tools\\commandline\\convert2dxtn + CanCheckoutShared = true + SccProjectUniqueName11 = ..\\game\\libs\\pure3d\\lib\\freetype\\builds\\win32\\visualc\\freetype.vcproj + SccLocalPath11 = ..\\game\\libs\\pure3d\\lib\\freetype\\builds\\win32\\visualc + CanCheckoutShared = true + SccProjectUniqueName12 = ..\\game\\libs\\pure3d\\build\\win32\\libpng.vcproj + SccLocalPath12 = ..\\game\\libs\\pure3d\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName13 = ..\\game\\libs\\pure3d\\tools\\commandline\\makechunktool\\makechunktool.vcproj + SccLocalPath13 = ..\\game\\libs\\pure3d\\tools\\commandline\\makechunktool + CanCheckoutShared = true + SccProjectUniqueName14 = objectsnapper\\build\\objectsnapper.vcproj + SccLocalPath14 = objectsnapper\\build + CanCheckoutShared = true + SccProjectUniqueName15 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3d2dsg\\p3d2dsg.vcproj + SccLocalPath15 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3d2dsg + CanCheckoutShared = true + SccProjectUniqueName16 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3ddel\\p3ddel.vcproj + SccLocalPath16 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3ddel + CanCheckoutShared = true + SccProjectUniqueName17 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3ddiff\\p3ddiff.vcproj + SccLocalPath17 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3ddiff + CanCheckoutShared = true + SccProjectUniqueName18 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3dexplorer\\p3dexplorer.vcproj + SccLocalPath18 = ..\\game\\libs\\pure3d\\tools\\gui-win32\\p3dexplorer + CanCheckoutShared = true + SccProjectUniqueName19 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgc\\p3dgc.vcproj + SccLocalPath19 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgc + CanCheckoutShared = true + SccProjectUniqueName20 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgendsg\\p3dgendsg.vcproj + SccLocalPath20 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgendsg + CanCheckoutShared = true + SccProjectUniqueName21 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgeo2prims\\p3dgeo2prims.vcproj + SccLocalPath21 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dgeo2prims + CanCheckoutShared = true + SccProjectUniqueName22 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dimage\\p3dimage.vcproj + SccLocalPath22 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dimage + CanCheckoutShared = true + SccProjectUniqueName23 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dmutate\\p3dmutate.vcproj + SccLocalPath23 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dmutate + CanCheckoutShared = true + SccProjectUniqueName24 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsort\\p3dsort.vcproj + SccLocalPath24 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsort + CanCheckoutShared = true + SccProjectUniqueName25 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsplit\\p3dsplit.vcproj + SccLocalPath25 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dsplit + CanCheckoutShared = true + SccProjectUniqueName26 = ..\\game\\libs\\radcontent\\build\\win32\\radcontent.vcproj + SccLocalPath26 = ..\\game\\libs\\radcontent + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection26 = build\\win32\\ + SccProjectUniqueName27 = ..\\game\\libs\\radcore\\build\\win32\\radcore.vcproj + SccLocalPath27 = ..\\game\\libs\\radcore + CanCheckoutShared = true + SccProjectFilePathRelativizedFromConnection27 = build\\win32\\ + SccProjectUniqueName28 = ..\\game\\libs\\radmath\\build\\win32\\radmath.vcproj + SccLocalPath28 = ..\\game\\libs\\radmath\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName29 = relatedfiles\\relatedfiles.vcproj + SccLocalPath29 = relatedfiles + CanCheckoutShared = true + SccProjectUniqueName30 = ..\\game\\libs\\pure3d\\tools\\commandline\\roadOptimizer\\roadOptimizer.vcproj + SccLocalPath30 = ..\\game\\libs\\pure3d\\tools\\commandline\\roadOptimizer + CanCheckoutShared = true + SccProjectUniqueName31 = ..\\game\\libs\\pure3d\\toollib\\toollib.vcproj + SccLocalPath31 = ..\\game\\libs\\pure3d\\toollib + CanCheckoutShared = true + SccProjectUniqueName32 = ..\\game\\libs\\pure3d\\toollib\\toollib_extras.vcproj + SccLocalPath32 = ..\\game\\libs\\pure3d\\toollib + CanCheckoutShared = true + SccProjectUniqueName33 = trackeditor\\build\\trackeditor.vcproj + SccLocalPath33 = trackeditor\\build + CanCheckoutShared = true + SccProjectUniqueName34 = worldbuilder\\build\\worldbuilder.vcproj + SccLocalPath34 = worldbuilder\\build + CanCheckoutShared = true + SccProjectUniqueName35 = ..\\game\\libs\\pure3d\\build\\win32\\zlib.vcproj + SccLocalPath35 = ..\\game\\libs\\pure3d\\build\\win32 + CanCheckoutShared = true + SccProjectUniqueName36 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dcompdrawopt\\p3dcompdrawopt.vcproj + SccLocalPath36 = ..\\game\\libs\\pure3d\\tools\\commandline\\p3dcompdrawopt + CanCheckoutShared = true + EndGlobalSection + GlobalSection(SolutionConfiguration) = preSolution + ConfigName.0 = Debug + ConfigName.1 = Release + ConfigName.2 = Tools Debug + ConfigName.3 = Tools Release + ConfigName.4 = Tune + EndGlobalSection + GlobalSection(ProjectDependencies) = postSolution + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B93AEF58-B533-4820-A0D0-1F8E91301129}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {F7404001-6D28-4698-9BF8-5B26426765EA}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {F7404001-6D28-4698-9BF8-5B26426765EA}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {F7404001-6D28-4698-9BF8-5B26426765EA}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {F7404001-6D28-4698-9BF8-5B26426765EA}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {F7404001-6D28-4698-9BF8-5B26426765EA}.4 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {F7404001-6D28-4698-9BF8-5B26426765EA}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {01A371FA-BA4E-4DC9-B339-4E9552545991}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.2 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.0 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.2 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.4 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.5 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.1 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.2 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {84451C74-4E26-4557-9FB8-8C26243DAC55}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.4 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.2 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.3 = {8CC3C650-909A-42E8-9039-04697C27C565} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.5 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.0 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.1 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.2 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.3 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.4 = {8CC3C650-909A-42E8-9039-04697C27C565} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.0 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.1 = {8CC3C650-909A-42E8-9039-04697C27C565} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.2 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.3 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.4 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.5 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {8D79E782-9747-4732-A869-CA630AC7D3C0}.6 = {0C2A1DB4-652B-4F59-BBDC-376E94561647} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.1 = {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.3 = {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.4 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.5 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.6 = {86DA78E6-9FC4-40B7-9E55-390903F2A144} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.7 = {0C2A1DB4-652B-4F59-BBDC-376E94561647} + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.8 = {A45F932B-0CF8-41B0-A8FF-1386283E2BE7} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.0 = {6D333C70-A27D-4E25-AD26-BB9E20558B8F} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.1 = {01B694CE-5AFC-4832-B18E-73AE3E811C74} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.2 = {8CC3C650-909A-42E8-9039-04697C27C565} + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.3 = {CDB92E4A-1E5D-49A8-8153-34264B3FEF29} + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune.Build.0 = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Debug.ActiveCfg = Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Debug.Build.0 = Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Release.ActiveCfg = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Release.Build.0 = Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Debug.Build.0 = Tools Debug|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Release.ActiveCfg = Tools Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tools Release.Build.0 = Tools Release|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tune.ActiveCfg = Tune|Win32 + {86DA78E6-9FC4-40B7-9E55-390903F2A144}.Tune.Build.0 = Tune|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug.ActiveCfg = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release.ActiveCfg = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release.Build.0 = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug.Build.0 = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release.Build.0 = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune.Build.0 = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Debug.ActiveCfg = Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Debug.Build.0 = Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Release.ActiveCfg = Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Release.Build.0 = Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Debug.Build.0 = Tools Debug|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Release.ActiveCfg = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tools Release.Build.0 = Tools Release|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tune.ActiveCfg = Tune|Win32 + {D490A7A5-ABD2-4BB7-940F-0DDC65F969C3}.Tune.Build.0 = Tune|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune.Build.0 = Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune.Build.0 = Tools Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune.Build.0 = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Debug.ActiveCfg = Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Debug.Build.0 = Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Release.ActiveCfg = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Release.Build.0 = Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Debug.Build.0 = Tools Debug|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Release.ActiveCfg = Tools Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tools Release.Build.0 = Tools Release|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tune.ActiveCfg = Tune|Win32 + {0C2A1DB4-652B-4F59-BBDC-376E94561647}.Tune.Build.0 = Tune|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Debug.ActiveCfg = Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Debug.Build.0 = Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Release.ActiveCfg = Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Release.Build.0 = Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Debug.Build.0 = Tools Debug|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Release.ActiveCfg = Tools Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tools Release.Build.0 = Tools Release|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tune.ActiveCfg = Tune|Win32 + {A45F932B-0CF8-41B0-A8FF-1386283E2BE7}.Tune.Build.0 = Tune|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Debug.ActiveCfg = Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Debug.Build.0 = Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Release.ActiveCfg = Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Release.Build.0 = Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Debug.Build.0 = Tools Debug|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Release.ActiveCfg = Tools Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tools Release.Build.0 = Tools Release|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tune.ActiveCfg = Tune|Win32 + {01B694CE-5AFC-4832-B18E-73AE3E811C74}.Tune.Build.0 = Tune|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release.Build.0 = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Release.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune.Build.0 = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Debug.ActiveCfg = Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Debug.Build.0 = Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Release.ActiveCfg = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Release.Build.0 = Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Debug.Build.0 = Tools Debug|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Release.ActiveCfg = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tools Release.Build.0 = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tune.ActiveCfg = Tools Release|Win32 + {8CC3C650-909A-42E8-9039-04697C27C565}.Tune.Build.0 = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug.ActiveCfg = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug.Build.0 = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release.ActiveCfg = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release.Build.0 = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug.Build.0 = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release.ActiveCfg = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release.Build.0 = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune.ActiveCfg = Tune|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune.Build.0 = Tune|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune.Build.0 = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Debug.ActiveCfg = Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Debug.Build.0 = Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Release.ActiveCfg = Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Release.Build.0 = Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Debug.Build.0 = Tools Debug|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Release.ActiveCfg = Tools Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tools Release.Build.0 = Tools Release|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tune.ActiveCfg = Tune|Win32 + {38D5EE66-A56C-4673-9A53-4C92D2CA4DD1}.Tune.Build.0 = Tune|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/tools/CreateSetChunk/SetChunk.dsp b/tools/CreateSetChunk/SetChunk.dsp new file mode 100644 index 0000000..45bc869 --- /dev/null +++ b/tools/CreateSetChunk/SetChunk.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="Image2LUT" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=Image2LUT - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "SetChunk.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "SetChunk.mak" CFG="Image2LUT - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Image2LUT - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "Image2LUT - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "Image2LUT" +# PROP Scc_LocalPath "." +CPP=snCl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Image2LUT - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../perl" /I "../../game/libs/pure3d/toollib/inc" /I "../../game/libs/pure3d/constants" /I "../../game/libs/pure3d/toollib/chunks16/inc" /I "../../game/code/constants" /I "../../game/libs/radmath" /I "../../game/libs" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "P3DDEBUG" /D "P3DWIN95" /D "RAD_RELEASE" /D "RAD_WIN32" /D "RAD_PC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=snBsc.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"LIBC.lib" /out:"..\bin\CreateSetChunk.exe" +# SUBTRACT LINK32 /nodefaultlib + +!ELSEIF "$(CFG)" == "Image2LUT - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../perl" /I "../../game/libs/pure3d/toollib/inc" /I "../../game/libs/pure3d/constants" /I "../../game/libs/pure3d/toollib/chunks16/inc" /I "../../game/libs/radmath" /I "../../game/code/constants" /I "../../game/libs" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "P3DDEBUG" /D "P3DWIN95" /D "RAD_DEBUG" /D "RAD_WIN32" /D "RAD_PC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=snBsc.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBC.lib LIBCMTD.lib" /pdbtype:sept +# SUBTRACT LINK32 /nodefaultlib + +!ENDIF + +# Begin Target + +# Name "Image2LUT - Win32 Release" +# Name "Image2LUT - Win32 Debug" +# Begin Group "Source" + +# PROP Default_Filter "*.cpp, *.c" +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# Begin Source File + +SOURCE=.\Param.cpp +# End Source File +# Begin Source File + +SOURCE=.\version.cpp +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "*.hpp, *.h" +# Begin Source File + +SOURCE=.\Param.hpp +# End Source File +# Begin Source File + +SOURCE=.\version.hpp +# End Source File +# End Group +# Begin Source File + +SOURCE=.\SetChunk.sc + +!IF "$(CFG)" == "Image2LUT - Win32 Release" + +# Begin Custom Build - ToolsParamCreator +InputPath=.\SetChunk.sc +InputName=SetChunk + +BuildCmds= \ + ..\..\game\libs\pure3d\tools\commandline\bin\ToolsParamCreator -s $(InputName).sc + +"Param.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"Param.hpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "Image2LUT - Win32 Debug" + +# Begin Custom Build +InputPath=.\SetChunk.sc +InputName=SetChunk + +BuildCmds= \ + ..\..\game\libs\pure3d\tools\commandline\bin\ToolsParamCreator -s $(InputName).sc + +"Param.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"Param.hpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Target +# End Project diff --git a/tools/CreateSetChunk/SetChunk.dsw b/tools/CreateSetChunk/SetChunk.dsw new file mode 100644 index 0000000..6e2d18e --- /dev/null +++ b/tools/CreateSetChunk/SetChunk.dsw @@ -0,0 +1,122 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Image2LUT"=.\SetChunk.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "freetype"=..\..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "libpng"=..\..\game\libs\pure3d\build\win32\libpng.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "radmath"=..\..\game\libs\radmath\build\win32\radmath.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "toollib"=..\..\game\libs\pure3d\toollib\toollib.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "toollib_extras"=..\..\game\libs\pure3d\toollib\toollib_extras.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "zlib"=..\..\game\libs\pure3d\build\win32\zlib.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/tools/CreateSetChunk/SetChunk.sc b/tools/CreateSetChunk/SetChunk.sc new file mode 100644 index 0000000..d7b5092 --- /dev/null +++ b/tools/CreateSetChunk/SetChunk.sc @@ -0,0 +1,22 @@ +tool SetChunk : + description( "This tool turns a texture animation into a set chunk." ) +{ +} + +parameter OutputFile : + short( o ), + long( "output-file" ), + arg( name ), + description( "Specify output file." ), + type( string ) +{ +} + +parameter ShaderName : + short( s ), + long( "shader-name" ), + arg( name ), + description( "Specify the shader with texture animation whose textures will become set chunk." ), + type( string ) +{ +} diff --git a/tools/CreateSetChunk/main.cpp b/tools/CreateSetChunk/main.cpp new file mode 100644 index 0000000..62228a4 --- /dev/null +++ b/tools/CreateSetChunk/main.cpp @@ -0,0 +1,494 @@ +/*=========================================================================== + File: main.cpp + + This tool turns a greyscale image into a raw look up table. + + Copyright (c) Radical Entertainment, Inc. All rights reserved. + +===========================================================================*/ + +#include <stdio.h> +#include <assert.h> +#include <toollib.hpp> +#include <dospath.hpp> +#include <tlFrameControllerChunk16.hpp> +#include <tlAnimationChunk.hpp> +#include <atenum.hpp> +#include <chunkids.hpp> + +#include "Param.hpp" +#include <tlSetChunk.hpp> + +Parameters* Param; +char outFile[P3DMAXNAME]; + +struct TextureData +{ + TextureData() : + m_TextureID( 0 ), + m_NumIDs( 0 ), + m_ShaderID( 0 ), + m_AnimationChunk( 0 ), + m_ControllerChunk( 0 ), +// m_MultiControllerChunk( 0 ), + m_pSetChunk( 0 ), + m_WritenOut( false ) {}; + ~TextureData() { delete m_TextureID; } // Set chunk is deleted by the output chunk. + TLUID* m_TextureID; // List of texture chunks to put into set chunk. + int m_NumIDs; // Number in list. If number is negative then just the animation/controller chunk are removed and multicontroller modified. + TLUID m_ShaderID; // The shader this data is for. + TLUID m_AnimationChunk; // Texture animation chunk to remove. + TLUID m_ControllerChunk; // Texture frame controller chunk to remove. +// TLUID m_MultiControllerChunk; // MultiController to remove texture frame controller from. + tlSetChunk* m_pSetChunk; // Set chunk which will be written to file. + bool m_WritenOut; // Has the set chunk been written out? +}; + +static const int TEXTURE_COLLECTION_SIZE = 256; +static TextureData* g_TextureCollection[ TEXTURE_COLLECTION_SIZE ]; +static int g_TextureCollectionCount = 0; + +int main(int argc, char* argv[]) +{ + Param = new Parameters(argc,argv); + bool sameFile = false; // Have we switched to a new output file. + + tlDataChunk::RegisterDefaultChunks(); + + tlFile* output = 0; + + for( int i = 0; i < TEXTURE_COLLECTION_SIZE; ++i ) + { + g_TextureCollection[ i ] = 0; + } + + if( Param->Files.Count() < 1 ) + { + printf( "Must specify at least one input file.\n" ); + exit( -1 ); + } + if( Param->ShaderName == 0 ) + { + printf( "Must specify the name of the shader with texture animation.\n" ); + exit( -1 ); + } + + bool wildCardShader = false; + int shaderNameLen = strlen( Param->ShaderName ); + if( Param->ShaderName[ shaderNameLen - 1 ] == '*' ) + { + wildCardShader = true; + --shaderNameLen; + Param->ShaderName[ shaderNameLen ] = '\0'; + } + + // for each file on the command-line, do the following: + for(int curFile = 0; curFile < Param->Files.Count(); curFile++) + { + tlFile input(new tlFileByteStream(Param->Files[ curFile ], omREAD), tlFile::FROMFILE); + if(!input.IsOpen()) + { + printf("Could not open %s\n", Param->Files[ curFile ]); + exit( -1 ); + } + tlDataChunk* inChunk = new tlDataChunk( &input ); + + char outFileName[256]; + if( output == 0 ) + { + if( Param->OutputFile ) + { + strcpy(outFileName, Param->OutputFile); + } + else + { + strcpy(outFileName, Param->Files[curFile]); + RemoveExtension(outFileName); + strcat(outFileName, ".p3d"); + } + output = new tlFile(new tlFileByteStream(outFileName, omWRITE), tlFile::CHUNK32); + if( ( output == 0 ) || ( !output->IsOpen() ) ) + { + printf("Could not open %s for writing\n", outFileName); + exit(-1); + } + sameFile = false; + } + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + delete g_TextureCollection[ i ]; + g_TextureCollection[ i ] = 0; + } + + /*************************************************/ + // First pass for input file, nose through the frame controllers. + // Go through all the sub-chunks of the input and look for shader name + //in heirarchy of texture frame controller. + int inChunkIndex; + for( inChunkIndex = 0; inChunkIndex < inChunk->SubChunkCount(); inChunkIndex++ ) + { + tlDataChunk* sub = inChunk->GetSubChunk( inChunkIndex ); + if( sub->ID() == Pure3D::Animation::FrameControllerData::FRAME_CONTROLLER ) + { + // We have a frame controller... + tlFrameControllerChunk* controller = static_cast<tlFrameControllerChunk*>( sub ); + if( controller->GetType() == Pure3DAnimationTypes::TEXTURE_TEX ) + { + // and it's a texture controller. So check the hierarchy name. + bool foundShader = false; + const char* heirName = controller->HierarchyName(); + if( wildCardShader ) + { + foundShader = strncmp( heirName, Param->ShaderName, shaderNameLen ) == 0; + } + else + { + foundShader = strcmp( heirName, Param->ShaderName ) == 0; + } + if( foundShader ) + { + // We found the shader so remember the texture animation data. + TextureData* texData = new TextureData(); + if( texData == 0 ) + { + printf( "Unable to allocate texture data.\n" ); + exit( -1 ); + } + texData->m_ShaderID = tlEntity::MakeUID( heirName ); + texData->m_ControllerChunk = tlEntity::MakeUID( controller->GetName() ); + texData->m_AnimationChunk = tlEntity::MakeUID( controller->AnimationName() ); + // Look to see if we already have this shader. + //If we do, we'll just erase the controller and animation and modify the multicontroller. + //The first texData will be used to create the chunk set. + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + if( g_TextureCollection[ i ]->m_ShaderID == texData->m_ShaderID ) + { + texData->m_NumIDs = -1; + break; + } + } + g_TextureCollection[ g_TextureCollectionCount ] = texData; + ++g_TextureCollectionCount; + } + } + } + } + /*************************************************/ + // Second pass. Now we look for the animation to go with all those texture frame controllers + //we found. + for( inChunkIndex = 0; inChunkIndex < inChunk->SubChunkCount(); inChunkIndex++ ) + { + tlDataChunk* sub = inChunk->GetSubChunk( inChunkIndex ); + // Is this an animation? + if( sub->ID() != Pure3D::Animation::AnimationData::ANIMATION ) + { + // No, not interested. + continue; + } + tlAnimationChunk* anim = static_cast<tlAnimationChunk*>( sub ); + // Is it a texture animation? + if( anim->GetAnimationType() != Pure3DAnimationTypes::TEXTURE_TEX ) + { + // No, not interested. + continue; + } + // We've found a texture animation. Check if it's one we are looking for. + TLUID animID = tlEntity::MakeUID( anim->GetName() ); + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + if( ( g_TextureCollection[ i ]->m_NumIDs == 0 ) && ( g_TextureCollection[ i ]->m_AnimationChunk == animID ) ) + { + // We've found the animation to match a frame controller. Let the mess begin. + TextureData* texData = g_TextureCollection[ i ]; // just for convience. + // Examine the sub chunks...there should be a goup list in there... + for( int subChunkIndex = 0; subChunkIndex < anim->SubChunkCount(); ++subChunkIndex ) + { + tlDataChunk* animSub = anim->GetSubChunk( subChunkIndex ); + if( animSub->ID() == Pure3D::Animation::AnimationData::GROUP_LIST ) + { + // Found the group list. Now we'll nose around the groups... + tlAnimationGroupListChunk* groupList = static_cast<tlAnimationGroupListChunk*>( animSub ); + for( int listChunkIndex = 0; listChunkIndex < groupList->SubChunkCount(); ++listChunkIndex ) + { + // Look at all the channels in the groups in the group list. + tlDataChunk* listSub = groupList->GetSubChunk( listChunkIndex ); + if( listSub->ID() == Pure3D::Animation::AnimationData::GROUP ) + { + tlAnimationGroupChunk* group = static_cast<tlAnimationGroupChunk*>( listSub ); + for( int channelIndex = 0; channelIndex < (int)group->GetNumChannels(); ++channelIndex ) + { + int i; + // In the group (whew), look at all the channels. + // Is it an entity channel? + tlDataChunk* channelSub = group->GetSubChunk( channelIndex ); + if( channelSub->ID() != Pure3D::Animation::ChannelData::ENTITY ) + { + // No, not interested. + continue; + } + // Is the entity channel a texture? + tlEntityChannelChunk* entityChannel = static_cast<tlEntityChannelChunk*>( channelSub ); + if( entityChannel->Param() != Pure3DAnimationTypes::TEXTURE_TEX ) + { + // No, not interested. + continue; + } + // Okay we have the entity channel for a texture animation, now we + //record the texture names. + // We might end up allocating extra space for textures, but we'll + //leave the UIDs at zero at the end of the array. + texData->m_TextureID = new TLUID[ entityChannel->GetNumFrames() ]; + if( texData->m_TextureID == 0 ) + { + printf( "Unable to allocate texture array.\n" ); + exit( -1 ); + } + for( i = 0; i < (int)entityChannel->GetNumFrames(); ++i ) + { + texData->m_TextureID[ i ] = 0; + } + // Get all the frame values. + char** values = entityChannel->GetValues(); + for( i = 0; i < (int)entityChannel->GetNumFrames(); ++i ) + { + TLUID textureID = tlEntity::MakeUID( values[ i ] ); + // We have the texture tUID, look if it's a duplicate. + bool textureDup = false; + for( int j = 0; j < texData->m_NumIDs; ++j ) + { + if( texData->m_TextureID[ j ] == textureID ) + { + // this one is a duplicate, skip it. + textureDup = true; + break; + } + } + if( !textureDup ) + { + // It's not a duplicate so remember it. + texData->m_TextureID[ texData->m_NumIDs ] = textureID; + ++texData->m_NumIDs; + } + } + } + } + } + } + } + } + } + } + /*************************************************/ + // Third pass, create the set chunks from the textures we got from those texture animations. + for( inChunkIndex = 0; inChunkIndex < inChunk->SubChunkCount(); inChunkIndex++ ) + { + tlDataChunk* sub = inChunk->GetSubChunk( inChunkIndex ); + if( sub->ID() == Pure3D::Texture::TEXTURE ) + { + // We've found a texture, check to see if it's one of the textures we are looking for. + TextureData* texData = 0; + int textureIDIndex = 0; + TLUID textureID = tlEntity::MakeUID( sub->GetName() ); + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + texData = g_TextureCollection[ i ]; + for( textureIDIndex = 0; textureIDIndex < texData->m_NumIDs; ++textureIDIndex ) + { + if( textureID == texData->m_TextureID[ textureIDIndex ] ) + { + if( texData->m_pSetChunk == 0 ) + { + texData->m_pSetChunk = new tlSetChunk(); + if( texData->m_pSetChunk == 0 ) + { + printf( "Unable to create tlSetChunk.\n" ); + exit( -1 ); + } + } + if( textureIDIndex == 0 ) + { + // This is the first texture in the set so we'll use the name for + //the set. + texData->m_pSetChunk->SetName( sub->GetName() ); + } + texData->m_pSetChunk->AppendSubChunk( sub, 0 ); + break; + } + } + } + } + } + + /*************************************************/ + // Forth pass, process the file. Copy all the chunks over, + //except the texture frame controllers, texture animations, + //and textures we've used. Also, modify the multicontrollers + //to exclude the texture frame controllers. + tlDataChunk* outChunk = new tlDataChunk; + + if( Param->WriteHistory && !sameFile ) + { + // put a history chunk in the output + // a history chunk shows what version of the tool + // was run on the file with what command-line + // parameters + outChunk->AppendSubChunk(Param->HistoryChunk()); + sameFile = true; + } + + if( outChunk == 0 ) + { + printf( "Unable to create output chunk.\n" ); + exit( -1 ); + } + for( inChunkIndex = 0; inChunkIndex < inChunk->SubChunkCount(); inChunkIndex++ ) + { + tlDataChunk* sub = inChunk->GetSubChunk( inChunkIndex ); + if( sub->ID() == Pure3D::Texture::TEXTURE ) + { + bool inAnySet = false; + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + // Theorically a texture can go into multiple sets so go through them all. + bool found = false; + TextureData* texData = g_TextureCollection[ i ]; + for( int j = 0; j < texData->m_NumIDs; ++j ) + { + // Look to see if this texture is in this set. + if( tlEntity::MakeUID( sub->GetName() ) == texData->m_TextureID[ j ] ) + { + found = true; + inAnySet = true; + break; + } + } + if( found && ( texData->m_NumIDs > 0 ) ) + { + // This texture has gone into this set chunk. We'll write the + //set chunk out at this point so it's roughly in the same place in + //file to protect against load order dependency problems. + if( texData->m_WritenOut == false ) + { + texData->m_pSetChunk->SetChildCount( texData->m_NumIDs ); + outChunk->AppendSubChunk( texData->m_pSetChunk ); + texData->m_WritenOut = true; // Only write it once. + } + } + } + if( !inAnySet ) + { + // This isn't a texture we're interested in so write it out. + outChunk->AppendSubChunk( sub ); + } + } + else if( sub->ID() == Pure3D::Animation::FrameControllerData::FRAME_CONTROLLER ) + { + // This is a frame controller. If it's one we've used then don't include it. + bool found = false; + TLUID controllerID = tlEntity::MakeUID( sub->GetName() ); + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + if( controllerID == g_TextureCollection[ i ]->m_ControllerChunk ) + { + found = true; + break; + } + } + if( !found ) + { + outChunk->AppendSubChunk( sub ); + } + } + else if( sub->ID() == Pure3D::Animation::AnimationData::ANIMATION ) + { + // This is an animation. If it's one we've used then don't include it. + bool found = false; + TLUID animID = tlEntity::MakeUID( sub->GetName() ); + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + if( animID == g_TextureCollection[ i ]->m_AnimationChunk ) + { + found = true; + break; + } + } + if( !found ) + { + outChunk->AppendSubChunk( sub ); + } + } + else if( sub->ID() == P3D_MULTI_CONTROLLER ) + { + // This is a multicontroller. If a track references an framecontroller we + //used then exclude that track. + tlMultiControllerChunk16* multiCont = static_cast<tlMultiControllerChunk16*>( sub ); + for( int subIndex = 0; subIndex < multiCont->SubChunkCount(); ++subIndex ) + { + tlDataChunk* subChunk = multiCont->GetSubChunk( subIndex ); + if( subChunk->ID() == P3D_MULTI_CONTROLLER_TRACKS ) + { + tlMultiControllerTracksChunk16* tracks = static_cast<tlMultiControllerTracksChunk16*>( subChunk ); + unsigned long numTracks = tracks->GetNumTracks(); + tlMultiControllerTrackData* trackArray = tracks->GetTracks(); + for( int i = 0; i < numTracks; ++i ) + { + TLUID trackID = tlEntity::MakeUID( trackArray[ i ].name ); + for( int j = 0; j < g_TextureCollectionCount; ++j ) + { + if( trackID == g_TextureCollection[ j ]->m_ControllerChunk ) + { + // Remove this track. + --numTracks; + tracks->SetNumTracks( numTracks ); + multiCont->SetNumTracks( multiCont->GetNumTracks() - 1 ); + if( i < numTracks ) + { + trackArray[ i ] = trackArray[ numTracks ]; + --i; + } + } + } + } + } + else if( subChunk->ID() == P3D_MULTI_CONTROLLER_TRACK ) + { + tlMultiControllerTrackChunk16* track = static_cast<tlMultiControllerTrackChunk16*>( subChunk ); + TLUID trackID = tlEntity::MakeUID( track->GetName() ); + for( int i = 0; i < g_TextureCollectionCount; ++i ) + { + if( trackID == g_TextureCollection[ i ]->m_ControllerChunk ) + { + multiCont->RemoveSubChunk( subIndex ); + multiCont->SetNumTracks( multiCont->GetNumTracks() - 1 ); + } + } + } + } + outChunk->AppendSubChunk( sub ); + } + else + { + outChunk->AppendSubChunk( sub ); + } + } + outChunk->Write( output ); + delete outChunk; + outChunk = 0; + if( Param->OutputFile == 0 ) + { + // We have multiple output files so get rid of the + //the output file now. + delete output; + output = 0; + } + for( i = 0; i < g_TextureCollectionCount; ++i ) + { + delete g_TextureCollection[ i ]; + g_TextureCollection[ i ] = 0; + } + } // end of main for loop + + delete Param; + return 0; +} diff --git a/tools/CreateSetChunk/version.cpp b/tools/CreateSetChunk/version.cpp new file mode 100644 index 0000000..ac9ae2b --- /dev/null +++ b/tools/CreateSetChunk/version.cpp @@ -0,0 +1,21 @@ +/*=========================================================================== + + File:: version.cpp + + Copyright (c) Radical Entertainment, Inc. All rights reserved. + +===========================================================================*/ + +#include <stdio.h> +#include "version.hpp" + +char* version = "1.0.1"; + +/* History */ + +char* versioninfo[] = { + "1.0.1 Perserve tMultiControllers, just remove texture animation.", + "1.0.0 Initial version.", + NULL +}; + diff --git a/tools/CreateSetChunk/version.hpp b/tools/CreateSetChunk/version.hpp new file mode 100644 index 0000000..076e5ec --- /dev/null +++ b/tools/CreateSetChunk/version.hpp @@ -0,0 +1,15 @@ +/*=========================================================================== + + File:: version.hpp + + Copyright (c) Radical Entertainment, Inc. All rights reserved. + +===========================================================================*/ + +#ifndef _VERSION_HPP +#define _VERSION_HPP + +extern char* version; +extern char* versioninfo[]; + +#endif diff --git a/tools/DSGmaker/DSGList.cpp b/tools/DSGmaker/DSGList.cpp new file mode 100644 index 0000000..700497f --- /dev/null +++ b/tools/DSGmaker/DSGList.cpp @@ -0,0 +1,389 @@ +#include <cstring> +#include <stdio.h> +#include <..\..\..\tools\dsgmaker\DSGList.hpp> +#include <tlDataChunk.hpp> +#include <..\constants\srrchunks.h> + + +const int MAX_DSG = 100; + +DSGList::DSGList () +{ + mbNoInstanceChunks = false; + mindex =0; + mp_list = new tlDataChunk* [MAX_DSG]; + mp_list[0]=NULL; +} + +DSGList::~DSGList () +{ + delete [] mp_list; +} + +//input DynaDSG name and it should return a pointer to the dsg or null if failure +tlDataChunk* DSGList::GetDSG(const char * name) +{ + + //search the array for the name. + for(unsigned int i=0;i<mindex;i++) + { + //printf(" Searching for %s, against %s\n",name,mp_list[i]->GetName()); + //if we find it return pointer otherwise it will return null by default + if (strcmp ( mp_list[i]->GetName(),name)==0) + { + return( mp_list[i] ); + } + } + return NULL; + +} + +// add a dynaphyschunk to the list +int DSGList::AddDSG (tlDataChunk* p_dsg) +{ + if(mindex < MAX_DSG -1) + { + mp_list[mindex++]=p_dsg; + return 0; + } + else + { + printf(" ERROR: ====> DSGList if FULL! Unable to add entery! \n"); + return 1; + } + +} + + +//returns the number of enteries in list. +unsigned int DSGList::GetIndexCount() +{ + return mindex; +} + +//input index and it should return a pointer to the dsg or null if failure +tlDataChunk* DSGList::GetDSGByIndex(unsigned int i) +{ + + //search the array for the name. + if ( i >=0 && i <mindex) + { + return( mp_list[i] ); + } + else + { + return NULL; + } +} + + +//resorts the DSGchunks so according the the priority set in the toollib_extras.hpp file +void DSGList::ReSortDSGChunks(void) +{ + printf ("Resorting DSG Chunks\n"); + //sort the DSGchunks internally so InstanceChunks are last + + for( unsigned int i=0;i<GetIndexCount();i++) + { + + tlDataChunk* p_dsg=NULL; + p_dsg=GetDSGByIndex(i); + if (p_dsg == NULL) + { + printf(" ERROR: ==== > Sorting DSG! \n"); + } + else + { + p_dsg->SortSubChunks(); + } + } + +} + +//checks the DSG chunks for missing Chunks that will cause the game loaders to crash. +unsigned int DSGList::VerifyChunks(void) +{ + tlDataChunk* p_datachunk=NULL; + bool badart = false; + + printf("\nVerifying Chunks arent missing components....\n"); + + for (unsigned int i=0; i<mindex;i++) + { + p_datachunk=mp_list[i]; + switch(p_datachunk->ID()) + { + case SRR2::ChunkID::DYNA_PHYS_DSG: + { + tlDataChunk* p_subchunk=NULL; + int subcount=p_datachunk->SubChunkCount(); + + if (subcount<5) + { + bool meshchunk =false; + bool physicschunk=false; + bool collisionchunk= false; + bool otc = false; + bool instancechunk = false; + + + for( int j=0;j<subcount;j++) + { + p_subchunk=p_datachunk->GetSubChunk(j); + + switch(p_subchunk->ID()) + { + case Pure3D::Mesh::MESH: + { + meshchunk = true; + break; + } + case Simulation::Physics::OBJECT: + { + physicschunk = true; + break; + } + case SRR2::ChunkID::OBJECT_ATTRIBUTES: + { + otc = true; + break; + } + case Simulation::Collision::OBJECT: + { + collisionchunk = true ; + break; + } + case SRR2::ChunkID::INSTANCES: + { + instancechunk= true; + break; + } + default: + { + printf(" Unexpected ChunkType %d \n",p_subchunk->ID() ); + break; + } + }//end of switch for sub chunk check + }//end of for loop to subchunk iteration + + if (meshchunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s DynaDSGChunk is missing MeshChunk\n",p_datachunk->GetName()); + } + + if (physicschunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s DynaDSGChunk is missing PhysicsChunk\n",p_datachunk->GetName()); + } + + if(otc != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s DynaDSGChunk is missing Object Attribute Chunk\n",p_datachunk->GetName()); + + } + + if(collisionchunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s DynaDSGChunk is missing BoundingVolume\n",p_datachunk->GetName()); + + } + + if( instancechunk != true) + { + if (mbNoInstanceChunks == true) + { + + } + else + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s DynaPhysDSGChunk is missing Instanced Chunk\n",p_datachunk->GetName()); + } + } + }//end if + break; + }//end case + case SRR2::ChunkID::INSTA_STATIC_PHYS_DSG: + { + tlDataChunk* p_subchunk=NULL; + int subcount=p_datachunk->SubChunkCount(); + + if (subcount<4) + { + bool meshchunk =false; + bool collisionchunk= false; + bool otc = false; + bool instancechunk = false; + + for( int j=0;j<subcount;j++) + { + p_subchunk=p_datachunk->GetSubChunk(j); + + switch(p_subchunk->ID()) + { + case Pure3D::Mesh::MESH: + { + meshchunk = true; + break; + } + case SRR2::ChunkID::OBJECT_ATTRIBUTES: + { + otc = true; + break; + } + case Simulation::Collision::OBJECT: + { + collisionchunk = true ; + break; + } + case SRR2::ChunkID::INSTANCES: + { + instancechunk= true; + break; + } + default: + { + printf(" Unexpected ChunkType %d \n",p_subchunk->ID() ); + break; + } + }//end of switch for sub chunk check + }//end of for loop to subchunk iteration + + if (meshchunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaStaticPhysDSGChunk is missing MeshChunk\n",p_datachunk->GetName()); + } + + if(otc != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaStaticPhysDSGChunk is missing Object Attribute Chunk\n",p_datachunk->GetName()); + + } + + if(collisionchunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaStaticPhysDSGChunk is missing Bounding Volume\n",p_datachunk->GetName()); + + } + + if( instancechunk != true) + { + if (mbNoInstanceChunks == true) + { + + } + else + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaStaticPhysDSGChunk is missing Instanced Chunk\n",p_datachunk->GetName()); + } + } + }//end if + break; + }//end of InstaStatPhyscase + + case SRR2::ChunkID::INSTA_ENTITY_DSG: + { + tlDataChunk* p_subchunk=NULL; + int subcount=p_datachunk->SubChunkCount(); + + if (subcount<2) + { + bool meshchunk =false; + bool instancechunk = false; + + + for( int j=0;j<subcount;j++) + { + p_subchunk=p_datachunk->GetSubChunk(j); + + switch(p_subchunk->ID()) + { + case Pure3D::Mesh::MESH: + { + meshchunk = true; + break; + } + case SRR2::ChunkID::INSTANCES: + { + instancechunk= true; + break; + } + default: + { + printf(" Unexpected ChunkType %d \n",p_subchunk->ID() ); + break; + } + }//end of switch for sub chunk check + }//end of for loop to subchunk iteration + + if (meshchunk != true) + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaEntityDSGChunk is missing MeshChunk\n",p_datachunk->GetName()); + } + + if( instancechunk != true) + { + if (mbNoInstanceChunks == true) + { + + } + else + { + badart =true; + DSGList::PrintErrors(); + printf (" ERROR:=====> %-30s InstaStaticPhysDSGChunk is missing Instanced Chunk\n",p_datachunk->GetName()); + } + } + }//end if + break; + }//end case + + }//end switch + + }//end for +if (badart == true) +{ + return 1; +} + +return 0; + +}//end of VerifyChunks method + + +// formatted IO Header for errors. +void DSGList::PrintErrors(void) +{ + printf("\n"); + printf("===============================================================================================\n"); + printf("\n"); +} + + + + + + + + + + diff --git a/tools/DSGmaker/DSGList.hpp b/tools/DSGmaker/DSGList.hpp new file mode 100644 index 0000000..e7ba78d --- /dev/null +++ b/tools/DSGmaker/DSGList.hpp @@ -0,0 +1,29 @@ +#ifndef DSGLIST_H +#define DSGLIST_H + +//custom list class,stores the address of DynaPhysDSG in a array,that i create in DSGmaker + +class tlDataChunk ; + + + +class DSGList +{ + public: + + bool mbNoInstanceChunks; + DSGList(); + virtual ~DSGList(); + int AddDSG(tlDataChunk* p_dsg); + unsigned int GetIndexCount(); + tlDataChunk* GetDSG(const char* name); + tlDataChunk* GetDSGByIndex(unsigned int i); + unsigned int VerifyChunks(void); + void ReSortDSGChunks(void); + + private: + void PrintErrors(void); + tlDataChunk** mp_list; + unsigned int mindex; +}; +#endif //end of file
\ No newline at end of file diff --git a/tools/DSGmaker/DSGmaker.dsp b/tools/DSGmaker/DSGmaker.dsp new file mode 100644 index 0000000..91d041c --- /dev/null +++ b/tools/DSGmaker/DSGmaker.dsp @@ -0,0 +1,176 @@ +# Microsoft Developer Studio Project File - Name="DSGmaker" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=DSGmaker - Win32 Tools Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "DSGmaker.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "DSGmaker.mak" CFG="DSGmaker - Win32 Tools Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "DSGmaker - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "DSGmaker - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "DSGmaker - Win32 Tools Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "DSGmaker - Win32 Tools Release" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "DSGmaker" +# PROP Scc_LocalPath "." +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "DSGmaker - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RAD_RELEASE" /D "RAD_WIN32" /D "RAD_PC" /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "DSGmaker - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS_DEBUG" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "DSGmaker - Win32 Tools Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "DSGmaker___Win32_Tools_Debug" +# PROP BASE Intermediate_Dir "DSGmaker___Win32_Tools_Debug" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS_DEBUG" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /YX /FD /GZ /c +# ADD CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "DSGmaker - Win32 Tools Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "DSGmaker___Win32_Tools_Release" +# PROP BASE Intermediate_Dir "DSGmaker___Win32_Tools_Release" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\game\libs\pure3d\toollib\inc" /I "..\..\game\libs\pure3d\constants" /I "..\..\game\code\constants" /I "..\..\game\libs\radmath" /I "..\..\game\libs\pure3d\toollib\chunks16\inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "RAD_RELEASE" /D "RAD_WIN32" /D "RAD_PC" /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 mysql++.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "DSGmaker - Win32 Release" +# Name "DSGmaker - Win32 Debug" +# Name "DSGmaker - Win32 Tools Debug" +# Name "DSGmaker - Win32 Tools Release" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\DSGList.cpp +# End Source File +# Begin Source File + +SOURCE=.\dsgmaker.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\DSGList.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\code\constants\phyprop.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Group "libs" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE="C:\mysql++\lib\mysql++.lib" +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/DSGmaker/DynaDSGList.cpp b/tools/DSGmaker/DynaDSGList.cpp new file mode 100644 index 0000000..d99f1b2 --- /dev/null +++ b/tools/DSGmaker/DynaDSGList.cpp @@ -0,0 +1,53 @@ +#include <cstring> +#include <stdio.h> +#include <..\..\..\tools\dsgmaker\DynaDSGList.hpp> +#include <tlDynaPhysDSGChunk.hpp> + + +const int MAX_DYNA_DSG = 50; + +DynaPhysDSGList::DynaPhysDSGList () +{ + mindex =0; + mp_list = new tlDynaPhysDSGChunk* [MAX_DYNA_DSG]; + mp_list[0]=NULL; +} + +DynaPhysDSGList::~DynaPhysDSGList () +{ + delete [] mp_list; +} + +//input DynaDSG name and it should return a pointer to the dsg or null if failure +tlDynaPhysDSGChunk* DynaPhysDSGList::GetDyna(const char * name) +{ + + //search the array for the name. + for(unsigned int i=0;i<mindex;i++) + { + printf(" Searching for %s, against %s\n",name,mp_list[i]->GetName()); + //if we find it return pointer otherwise it will return null by default + if (strcmp ( mp_list[i]->GetName(),name)==0) + { + return( mp_list[i] ); + } + } + return NULL; + +} + +// add a dynaphyschunk to the list +int DynaPhysDSGList::AddDyna (tlDynaPhysDSGChunk* p_dyna) +{ + if(mindex < MAX_DYNA_DSG -1) + { + mp_list[mindex++]=p_dyna; + return 0; + } + else + { + printf("ERROR: DynaDSGList if FULL! Unable to add entery! \n"); + return 1; + } + +} diff --git a/tools/DSGmaker/DynaDSGList.hpp b/tools/DSGmaker/DynaDSGList.hpp new file mode 100644 index 0000000..3ba56a6 --- /dev/null +++ b/tools/DSGmaker/DynaDSGList.hpp @@ -0,0 +1,22 @@ +#ifndef DYNADSGLIST_H +#define DYNADSGLIST_H + +//custom list class,stores the address of DynaPhysDSG in a array,that i create in DSGmaker + +class tlDynaPhysDSGChunk ; + +class DynaPhysDSGList +{ + public: + DynaPhysDSGList(); + virtual ~DynaPhysDSGList(); + int AddDyna(tlDynaPhysDSGChunk* p_dyna); + unsigned int GetIndexCount(); + tlDynaPhysDSGChunk* GetDyna(const char* name); + + + private: + tlDynaPhysDSGChunk** mp_list; + unsigned int mindex; +}; +#endif //end of file
\ No newline at end of file diff --git a/tools/DSGmaker/InstaEntityDSGList.cpp b/tools/DSGmaker/InstaEntityDSGList.cpp new file mode 100644 index 0000000..83271fa --- /dev/null +++ b/tools/DSGmaker/InstaEntityDSGList.cpp @@ -0,0 +1,53 @@ +#include <cstring> +#include <stdio.h> +#include <..\..\..\tools\dsgmaker\InstaEntityDSGList.hpp> +#include <tlInstaEntityDSGChunk.hpp> + + +const int MAX_INSTA_DSG = 50; + +InstaEntityDSGList::InstaEntityDSGList () +{ + mindex =0; + mp_list = new tlInstaEntityDSGChunk* [MAX_INSTA_DSG]; + mp_list[0]=NULL; +} + +InstaEntityDSGList::~InstaEntityDSGList () +{ + delete [] mp_list; +} + +//input DSG name and it should return a pointer to the dsg or null if failure +tlInstaEntityDSGChunk* InstaEntityDSGList::GetInstaEntity(const char * name) +{ + + //search the array for the name. + for(unsigned int i=0;i<mindex;i++) + { + printf(" Searching for %s, against %s\n",name,mp_list[i]->GetName()); + //if we find it return pointer otherwise it will return null by default + if (strcmp ( mp_list[i]->GetName(),name)==0) + { + return( mp_list[i] ); + } + } + return NULL; + +} + +// add a InstaEntitychunk to the list +int InstaEntityDSGList::AddInstaEntity (tlInstaEntityDSGChunk* p_insta) +{ + if(mindex < MAX_INSTA_DSG -1) + { + mp_list[mindex++]=p_insta; + return 0; + } + else + { + printf("ERROR: InstaEntityDSGList if FULL! Unable to add entery! \n"); + return 1; + } + +} diff --git a/tools/DSGmaker/InstaEntityDSGList.hpp b/tools/DSGmaker/InstaEntityDSGList.hpp new file mode 100644 index 0000000..033e8a9 --- /dev/null +++ b/tools/DSGmaker/InstaEntityDSGList.hpp @@ -0,0 +1,20 @@ +#ifndef INSTAENTITYDSGLIST_H +#define INSTAENTITYDSGLIST_H + +//custom list class,stores the address of InstaEntityDSG's in a array,that i create in DSGmaker + +class tlInstaEntityDSGChunk ; + +class InstaEntityDSGList +{ + public: + InstaEntityDSGList(); + virtual ~InstaEntityDSGList(); + int AddInstaEntity(tlInstaEntityDSGChunk* p_insta); + tlInstaEntityDSGChunk* GetInstaEntity(const char* name); + + private: + tlInstaEntityDSGChunk** mp_list; + unsigned int mindex; +}; +#endif //end of file
\ No newline at end of file diff --git a/tools/DSGmaker/InstaStaticPhysDSGList.cpp b/tools/DSGmaker/InstaStaticPhysDSGList.cpp new file mode 100644 index 0000000..a9674b5 --- /dev/null +++ b/tools/DSGmaker/InstaStaticPhysDSGList.cpp @@ -0,0 +1,53 @@ +#include <cstring> +#include <stdio.h> +#include <..\..\..\tools\dsgmaker\InstaStaticPhysDSGList.hpp> +#include <tlInstaStaticPhysDSGChunk.hpp> + + +const int MAX_INSTA_DSG = 50; + +InstaStaticPhysDSGList::InstaStaticPhysDSGList () +{ + mindex =0; + mp_list = new tlInstaStaticPhysDSGChunk* [MAX_INSTA_DSG]; + mp_list[0]=NULL; +} + +InstaStaticPhysDSGList::~InstaStaticPhysDSGList () +{ + delete [] mp_list; +} + +//input DSG name and it should return a pointer to the dsg or null if failure +tlInstaStaticPhysDSGChunk* InstaStaticPhysDSGList::GetInstaStaticPhys(const char * name) +{ + + //search the array for the name. + for(unsigned int i=0;i<mindex;i++) + { + printf(" Searching for %s, against %s\n",name,mp_list[i]->GetName()); + //if we find it return pointer otherwise it will return null by default + if (strcmp ( mp_list[i]->GetName(),name)==0) + { + return( mp_list[i] ); + } + } + return NULL; + +} + +// add a InstaStaticPhyschunk to the list +int InstaStaticPhysDSGList::AddInstaStaticPhys (tlInstaStaticPhysDSGChunk* p_insta) +{ + if(mindex < MAX_INSTA_DSG -1) + { + mp_list[mindex++]=p_insta; + return 0; + } + else + { + printf("ERROR: InstaStaticPhysDSGList if FULL! Unable to add entery! \n"); + return 1; + } + +}
\ No newline at end of file diff --git a/tools/DSGmaker/InstaStaticPhysDSGList.hpp b/tools/DSGmaker/InstaStaticPhysDSGList.hpp new file mode 100644 index 0000000..2f9fc1a --- /dev/null +++ b/tools/DSGmaker/InstaStaticPhysDSGList.hpp @@ -0,0 +1,20 @@ +#ifndef INSTAPHYSDSGLIST_H +#define INSTAPHYSDSGLIST_H + +//custom list class,stores the address of InstaEntityDSG's in a array,that i create in DSGmaker + +class tlInstaStaticPhysDSGChunk ; + +class InstaStaticPhysDSGList +{ + public: + InstaStaticPhysDSGList(); + virtual ~InstaStaticPhysDSGList(); + int AddInstaStaticPhys(tlInstaStaticPhysDSGChunk* p_insta); + tlInstaStaticPhysDSGChunk* GetInstaStaticPhys(const char* name); + + private: + tlInstaStaticPhysDSGChunk** mp_list; + unsigned int mindex; +}; +#endif //end of file
\ No newline at end of file diff --git a/tools/DSGmaker/dsgmaker.cpp b/tools/DSGmaker/dsgmaker.cpp new file mode 100644 index 0000000..9624e04 --- /dev/null +++ b/tools/DSGmaker/dsgmaker.cpp @@ -0,0 +1,807 @@ +//DSGmaker a tool to traverse the the inventory of a Pure3d file and creates +//DSGchucks and bundles mesh,phys,BV,instance chunk together. Supports multiple objects in a file. + +#pragma warning(disable:4786) + +#include <iostream> +#include <cstring> +#include <iomanip> +#include <mysql++> +#include <..\..\..\tools\artchecker\artobject.h> +#include <..\..\..\tools\artchecker\artlimits.h> +#include <..\..\..\tools\artchecker\badlist.hpp> +#include <..\..\..\tools\artchecker\outputbuffer.hpp> + + +#include <toollib.hpp> +#include <tlCollisionObjectChunk.hpp> +#include <tlPhysicsObjectChunk.hpp> +#include <tlMeshChunk.hpp> +#include <..\constants\srrchunks.h> +#include <..\..\..\tools\dsgmaker\DSGList.hpp> +using namespace std; + +//function that strips all the extra crap(prefixes and appended junk) +//and returns actual object name in output pointer. + +unsigned int rootname(const char* input,char* output); + + +int main(int argc, char* argv[]) +{ + + //char* arguements [4]; + char* filename; + char querybuffer [1000]; + bool badart = false; + bool showall= false; + Result::iterator sql_iterator; + DSGList* p_dsglist =new DSGList(); + bool mbIgnoreMissingInstanceChunk = false; + + tlDataChunk::RegisterDefaultChunks(); + + //processes arguements + + //no options + if (argc ==1) + { + cout<<"Usage:Dsgmaker filename \n"; + exit (1); + } + + filename= argv[1]; + + if ( argc ==3) + { + if (strcmp( argv[2],"-nI") == 0) + { + mbIgnoreMissingInstanceChunk = true; + //printf("Ignoring Missing Chunks!\n"); + } + else + { + printf("Error: unknown arguement %s \n",argv[2]); + } + } + +/* + for (i=2;i<argc;i++) + { + arguements[i]=argv[i]; + + // user set strict + if (strcmp(arguements[i],"strict")== 0) + { + strict =true; + debugstring("strict option set"); + break; + } + + //user set add + + else if (strcmp (arguements[i],"add")==0) + { + add=true; + debugstring("add option set"); + break; + } + + else if (strcmp (arguements[i],"all")==0) + { + showall =true; + break; + } + //illegal option + else + { + cout <<arguements[i] <<" is an illegal option \n"; + exit (1); + } + +#ifdef DEBUG + cout<< i ; + cout<< arguements [i] << "\n"; +#endif + + } //end for + + */ + + //read in the pure3d file name + + tlFile input(new tlFileByteStream(filename,omREAD), tlFile::FROMFILE); + if(!input.IsOpen()) + { + printf("Could not open %s\n", filename); + exit(-1); + } + + cout<<"Processing Filename:"<<filename<<endl; + + //desend into the file and look at each object until no more objects left + + // make a tlDataChunk from the file + // this is the wrapper chunk for the input + tlDataChunk* inchunk = new tlDataChunk(&input); + // we don't need the tlFile anymore + // this cleans up the tlFile object including the + // tlFileByteStream + input.Close(); + + + // build an output chunk + tlDataChunk* outchunk = new tlDataChunk; + int ch; + + //connect to the Art DB + try + { + //setup artrb variables + bool dbconnect=false; + Row row; + + //creat connection and query objects + Connection con (use_exceptions); + Query query=con.query( ); + dbconnect=con.connect ("srr2test","radit","root","custom47"); + + + if (dbconnect == true) + { + cout<<"Connection to Artdb established proceeding.\n"; + } + else + { + cout<<"Cant connection to ArtDB Aborting! \n"; + exit (1); + } + + + // go through all the sub-chunks of the input and + // process the ones you care about + for(ch=0; ch < inchunk->SubChunkCount(); ch++) + { + // create the next sub-chunk + tlDataChunk* sub = inchunk->GetSubChunk(ch); + + // look at the id of the subchunk to decide if we + // want to do something with it or not + switch(sub->ID()) + { + + + case Pure3D::Mesh::MESH: + { + + //printf("\n"); + tlMeshChunk* p_mesh = (tlMeshChunk* ) sub; + char mesh_name[max_length]; + + //get object name and remove extra appended crap + ::rootname(p_mesh->GetName(),mesh_name); + + + //query ArtDB for info on this mesh + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",mesh_name); + query<< querybuffer; + Result myresult = query.store ( ); + + //check results, + //if not found in ArtDB make it a into a StaticEntityDSG as a default. + if (myresult.size ( ) ==0 ) + { + //create StaticEntityDSG chunk and append mesh + printf("%s : Mesh not found in ArtDB creating EntityDSGChunk !\n",mesh_name); + tlEntityDSGChunk* p_entitydsg =new tlEntityDSGChunk(); + p_entitydsg->SetName(p_mesh->GetName()); + p_entitydsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_entitydsg,FALSE); + + } + // its found in the ArtDB, need to determine what kind of DSG to make. + else + { + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + row =*sql_iterator; + char classtypeID [max_length]; + strcpy(classtypeID, row["ClassType"]); + printf("Found %s meshchunk \n",p_mesh->GetName()); + //printf("Classtype ID: %s \n",classtypeID); + + //make the correct DSG chunktype + if ( + (strcmp(classtypeID,"PROP_MOVEABLE")==0) || + (strcmp(classtypeID,"PROP_BREAKABLE")==0) || + (strcmp(classtypeID,"PROP_ONETIME_MOVEABLE")==0) + ) + { + printf(" %s is of type %s creating DynaPhysDSGChunk \n",mesh_name,classtypeID); + tlDynaPhysDSGChunk* p_dynaphysdsg =new tlDynaPhysDSGChunk (); + p_dynaphysdsg->SetName(p_mesh->GetName()); + p_dynaphysdsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_dynaphysdsg,FALSE); + p_dsglist->AddDSG(p_dynaphysdsg); + //printf(" Finished making chunk\n"); + } + + else if (strcmp(classtypeID,"PROP_STATIC")==0) + { + printf(" %s is of type %s creating InstaStaticPhysDSGChunk \n",mesh_name,classtypeID); + tlInstaStaticPhysDSGChunk* p_instaphysdsg =new tlInstaStaticPhysDSGChunk (); + p_instaphysdsg->SetName(p_mesh->GetName()); + p_instaphysdsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_instaphysdsg,FALSE); + p_dsglist->AddDSG(p_instaphysdsg); + } + + else if (strcmp(classtypeID,"PROP_DRAWABLE")==0) + { + printf(" %s is of type %s creating InstaEntityDSGChunk \n",mesh_name,classtypeID); + tlInstaEntityDSGChunk* p_instaentitydsg =new tlInstaEntityDSGChunk(); + p_instaentitydsg->SetName(p_mesh->GetName()); + p_instaentitydsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_instaentitydsg,FALSE); + p_dsglist->AddDSG(p_instaentitydsg); + } + + else if (strcmp(classtypeID,"STATIC")==0) + { + printf(" %s is of type %s creating EntityDSGChunk \n",mesh_name,classtypeID); + tlEntityDSGChunk* p_entitydsg =new tlEntityDSGChunk(); + p_entitydsg->SetName(p_mesh->GetName()); + p_entitydsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_entitydsg,FALSE); + } + + else if (strcmp(classtypeID,"DRAWABLE")==0) + { + printf(" %s is of type %s creating EntityDSGChunk \n",mesh_name,classtypeID); + tlEntityDSGChunk* p_entitydsg =new tlEntityDSGChunk(); + p_entitydsg->SetName(p_mesh->GetName()); + p_entitydsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(p_entitydsg,FALSE); + } + + else if (strcmp(classtypeID,"ANIMATED_BV")==0) + { + printf(" %s is of type %s creating AnimatedBvDSGChunk \n",mesh_name,classtypeID); + + //Need to finalize class specs with Greg, Devin and Trav TBD still + + //tlDynaPhysDSGChunk* p_dynaphysdsg =new tlDynaPhysDSGChunk (); + //p_dynaphysdsg->SetName(p_mesh->GetName()); + //p_dynaphysdsg->AppendSubChunk(sub,FALSE); + outchunk->AppendSubChunk(sub,FALSE); + } + else + { + printf("\n===================================================\n"); + printf("\n=\tError unknown %s ClasstypeID \n",classtypeID); + printf("\n===================================================\n"); + } + + + }//end for loop + + }//end else + //printf("exiting Mesh case\n"); + break; + } + case Simulation::Physics::OBJECT: + { + tlPhysicsObjectChunk *p_physobject = (tlPhysicsObjectChunk*) sub; + tlDataChunk* p_dsg=NULL; + char name[max_length]; + + ::rootname(p_physobject->GetName(),name); + printf("\n"); + printf("Phys Chunk: %s \n",p_physobject->GetName()); + + p_dsg =p_dsglist->GetDSG(p_physobject->GetName()); + + if( p_dsg ==NULL) + { + badart=true; + printf("\n===================================================\n"); + printf("\n=\tERROR: Cant find Parent DSG for %s, This Physics Volume is MISSING its mesh!!\n",p_physobject->GetName()); + printf("\n===================================================\n"); + } + else + { + printf(" Found the parent for %s\n",p_physobject->GetName()); + p_dsg->AppendSubChunk(sub,FALSE); + } + break; + } + + + case Simulation::Collision::OBJECT: + { + //printf("entering Collision object \n"); + //temp local variables + + tlCollisionObjectChunk* p_collisionobject= (tlCollisionObjectChunk*)sub; + bv_data bv_object; + tlDataChunk* p_dsg=NULL; + char sound [64] ="nosound"; //default vaule + + bool errors =false; + char querybuffer [1000]; + + + ::rootname(p_collisionobject->GetName(),bv_object.name); + + printf("\n"); + printf("BV name: %s \t ",p_collisionobject->GetName()); + + //seting default vaules, 7 is the default for staticphysDSG's, + //and physprop 0 is bogus vaule and should get filled in if BV object is know in the artdb. + bv_object.classtype=7; + bv_object.physpropid=0; + + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",bv_object.name); + query<< querybuffer; + Result myresult= query.store ( ); + + // cout << "Records Found: " << myresult.size() << endl ; + + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + + row =*sql_iterator; + char classtypeID [max_length]; + strcpy(classtypeID, row["ClassType"]); + bv_object.physpropid=row["physpropid"]; + strcpy(sound,row["Sound"]); + + //make the correct DSG chunktype + if (strcmp(classtypeID,"PROP_MOVEABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 3\n",bv_object.name,classtypeID); + bv_object.classtype=3; + } + + else if (strcmp(classtypeID,"PROP_BREAKABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 4\n",bv_object.name,classtypeID); + bv_object.classtype=4; + } + + else if (strcmp(classtypeID,"PROP_STATIC")==0) + { + printf(" %s is of type %s Setting Classtype to 2\n",bv_object.name,classtypeID); + bv_object.classtype=2; + } + + else if (strcmp(classtypeID,"DRAWABLE")==0) + { + printf(" %s is of type %s ERROR Drawable Objects DO NOT HAVE BV'S!!!\n",bv_object.name,classtypeID); + badart=true; + } + else if (strcmp(classtypeID,"PROP_DRAWABLE")==0) + { + printf(" %s is of type %s ERROR PROP_DRAWABLE Objects DO NOT HAVE BV'S!!!\n",bv_object.name,classtypeID); + badart=true; + } + + else if (strcmp(classtypeID,"ANIMATED_BV")==0) + { + printf(" %s is of type %s Setting Classtype to 5\n",bv_object.name,classtypeID); + bv_object.classtype=5; + } + else if (strcmp(classtypeID,"STATIC")==0) + { + printf(" %s is of type %s Setting Classtype to 2\n",bv_object.name,classtypeID); + bv_object.classtype=7; + } + else if (strcmp (classtypeID,"PROP_ONETIME_MOVEABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 10\n",bv_object.name,classtypeID); + bv_object.classtype=10; + } + + + + }//end for iterator loop + + + + //creating object attribute chunk + tlObjectAttributeChunk* p_otc =new tlObjectAttributeChunk (); + p_otc->SetClassType(bv_object.classtype); + p_otc->SetPhyPropID(bv_object.physpropid); + p_otc->SetSound(sound); + + //if object is a static then create a StaticPhysDSGChunk + if(bv_object.classtype == 7) + { + tlStaticPhysDSGChunk* p_statdsg =new tlStaticPhysDSGChunk (); + p_statdsg->AppendSubChunk(sub,FALSE); + p_statdsg->AppendSubChunk(p_otc); + p_statdsg->SetName(p_collisionobject->GetName()); + outchunk->AppendSubChunk(p_statdsg,FALSE); + } + + //otherwise find the Parent DSG and add OTC and + else + { + //printf(" Need to find Parent DSG \n"); + // find the parent DynaDSG object + p_dsg=p_dsglist->GetDSG(p_collisionobject->GetName()); + if(p_dsg ==NULL) + { + printf("\n===================================================\n"); + printf("\n=\tERROR: Cant Find Parent DSG for %s, This Bounding Volume is MISSING its Mesh!! \n",p_collisionobject->GetName()); + printf("\n===================================================\n"); + badart=true; + } + else + { + printf(" Found the parent for %s\n",p_collisionobject->GetName()); + p_dsg->AppendSubChunk(p_otc,FALSE); + p_dsg->AppendSubChunk(sub,FALSE); + } + } + //printf("exiting collision\n"); + break; + } + + + case SRR2::ChunkID::ANIM_DSG_WRAPPER: + { + bv_data bv_object; + char sound[64] = "nosound"; //setting default vaule + char chunkname [64]; + + + //tlAnimDSGWrapperChunk* p_animwrapper = dynamic_cast<tlAnimDSGWrapperChunk*>(sub); + + printf("Found %s AnimWrapperChunk \n",sub->GetName()); + ::rootname(sub->GetName(),chunkname); + + //query ArtDB for info on this instanced Animated object + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",chunkname); + query<< querybuffer; + Result myresult = query.store ( ); + + + //check if animwrapper found in artDB + if (myresult.size ( ) ==0 ) + + { + //object not found in the art db + printf(" ERROR: Object not found in the artDB,Skipping InstAnimDSGChuck Creation!\n"); + break; + } + + + //getting the phys properties + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + row =*sql_iterator; + + //set classtype to prop_breakable + bv_object.classtype =4; + bv_object.physpropid=row["physpropid"]; + strcpy(sound,row["Sound"]); + + } + + printf(" %s is of type InstaAnimDynaPhysDSG creating InstaEntityDSGChunk \n",sub->GetName()); + + //create InstaAnimDSGChunk and OTC + tlInstAnimDynaPhysDSGChunk* p_instanimdsg = new tlInstAnimDynaPhysDSGChunk (); + tlObjectAttributeChunk* p_otc = new tlObjectAttributeChunk (); + + //fill in data for the newly created chunks + p_instanimdsg->SetName(sub->GetName()); + p_otc->SetClassType(bv_object.classtype); + p_otc->SetPhyPropID(bv_object.physpropid); + p_otc->SetSound(sound); + + //append chunks into the InstaAnimDynaPhysDSGChunk + p_instanimdsg->AppendSubChunk(sub,FALSE); + p_instanimdsg->AppendSubChunk(p_otc,FALSE); + + //append InstaAnimDynaPhysDSGChunk to the outchunk + outchunk->AppendSubChunk(p_instanimdsg,FALSE); + p_dsglist->AddDSG(p_instanimdsg); + + break; + } + + case SRR2::ChunkID::ANIM_OBJ_DSG_WRAPPER: + { + bv_data bv_object; + char sound[64] = "nosound"; //setting default vaule + char chunkname [64]; + + + //tlAnimDSGWrapperChunk* p_animwrapper = dynamic_cast<tlAnimDSGWrapperChunk*>(sub); + + printf("Found %s AnimObjWrapperChunk \n",sub->GetName()); + ::rootname(sub->GetName(),chunkname); + + //query ArtDB for info on this instanced Animated object + sprintf(querybuffer, "SELECT * FROM objects WHERE name = '%s' ",chunkname); + query<< querybuffer; + Result myresult = query.store ( ); + + + //check if animobjwrapper found in artDB + if (myresult.size ( ) ==0 ) + + { + //object not found in the art db + printf(" ERROR: Object not found in the artDB,Skipping InstAnimDSGChuck Creation!\n"); + break; + } + + + //getting the phys properties + for (sql_iterator=myresult.begin ( ); sql_iterator!= myresult.end ( ); sql_iterator++) + { + + row =*sql_iterator; + + char classtypeID [max_length]; + strcpy(classtypeID, row["ClassType"]); + bv_object.physpropid=row["physpropid"]; + strcpy(sound,row["Sound"]); + strcpy(bv_object.name,sub->GetName()); + + //set the correct classtypeID + if (strcmp(classtypeID,"PROP_MOVEABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 3\n",bv_object.name,classtypeID); + bv_object.classtype=3; + } + + else if (strcmp(classtypeID,"PROP_BREAKABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 4\n",bv_object.name,classtypeID); + bv_object.classtype=4; + } + + else if (strcmp(classtypeID,"PROP_STATIC")==0) + { + printf(" %s is of type %s Setting Classtype to 2\n",bv_object.name,classtypeID); + bv_object.classtype=2; + } + + else if (strcmp(classtypeID,"DRAWABLE")==0) + { + printf(" %s is of type %s ERROR Drawable Objects DO NOT HAVE BV'S!!!\n",bv_object.name,classtypeID); + badart=true; + } + else if (strcmp(classtypeID,"PROP_DRAWABLE")==0) + { + printf(" %s is of type %s ERROR PROP_DRAWABLE Objects DO NOT HAVE BV'S!!!\n",bv_object.name,classtypeID); + badart=true; + } + + else if (strcmp(classtypeID,"ANIMATED_BV")==0) + { + printf(" %s is of type %s Setting Classtype to 5\n",bv_object.name,classtypeID); + bv_object.classtype=5; + } + else if (strcmp(classtypeID,"STATIC")==0) + { + printf(" %s is of type %s Setting Classtype to 2\n",bv_object.name,classtypeID); + bv_object.classtype=7; + } + + else if (strcmp(classtypeID,"PROP_ANIM_BREAKABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 9 \n",bv_object.name,classtypeID); + bv_object.classtype=9; + } + + else if (strcmp(classtypeID,"PROP_ONETIME_MOVEABLE")==0) + { + printf(" %s is of type %s Setting Classtype to 10\n",bv_object.name,classtypeID); + bv_object.classtype=10; + } + + + + }//end for loop + + printf(" %s is of type InstaAnimDynaPhysDSG creating InstaAnimDynaPhysDSGChunk \n",sub->GetName()); + + //create InstaAnimDSGChunk and OTC + tlInstAnimDynaPhysDSGChunk* p_instanimdsg = new tlInstAnimDynaPhysDSGChunk (); + tlObjectAttributeChunk* p_otc = new tlObjectAttributeChunk (); + + //fill in data for the newly created chunks + p_instanimdsg->SetName(sub->GetName()); + p_otc->SetClassType(bv_object.classtype); + p_otc->SetPhyPropID(bv_object.physpropid); + p_otc->SetSound(sound); + + //append chunks into the InstaAnimDynaPhysDSGChunk + p_instanimdsg->AppendSubChunk(sub,FALSE); + p_instanimdsg->AppendSubChunk(p_otc,FALSE); + + //append InstaAnimDynaPhysDSGChunk to the outchunk + outchunk->AppendSubChunk(p_instanimdsg,FALSE); + p_dsglist->AddDSG(p_instanimdsg); + + break; + } + + + case SRR2::ChunkID::INSTANCES: + { + tlDataChunk* p_dsg=NULL; + tlDataChunk* subchunk= sub->GetSubChunk(0); + tlScenegraphChunk* p_scenegraphchunk= dynamic_cast<tlScenegraphChunk *>(subchunk); + + printf("\n"); + printf("Found %s instance chunk,looking for Parent DSG.\n",p_scenegraphchunk->GetName()); + p_dsg=p_dsglist->GetDSG(p_scenegraphchunk->GetName()); + if(p_dsg ==NULL) + { + printf("\n===================================================\n"); + printf("\n=\tERROR: Cant Find Parent DSG Chunk for %s, SceneGraph is MISSING its Mesh!! \n",p_scenegraphchunk->GetName()); + printf("\n===================================================\n"); + badart=true; + } + else + { + printf(" Found the parent for %s\n",p_scenegraphchunk->GetName()); + p_dsg->AppendSubChunk(sub,FALSE); + } + break; + } + + default: + { + // this is not a chunk that we care about + // so simply copy it to the output wrapper chunk + // the optional parameter to AppendSubChunk + // indicates that we have merely copied a pointer + // so the destructor of outchunk should not + // destroy this sub-chunk as that duty will be + // taken care of by the destructor of inchunk + outchunk->AppendSubChunk(sub,FALSE); + break; + } + }//end switch + }//end for + + p_dsglist->ReSortDSGChunks(); + + if ( mbIgnoreMissingInstanceChunk == true) + { + p_dsglist->mbNoInstanceChunks = true; + //printf("Ignore chunk is set!\n"); + } + + if(p_dsglist->VerifyChunks() == 1) + { + badart=true; + } + + + + } //end of try + + + + catch (BadQuery er) + { + cout<<"Error: " <<er.error<< endl; + return 1; + } + + if (badart) + { + + printf("\n=======================================================\n"); + printf("\n=\tERROR: %s is missing Chunks for DSG objects Aborting DSG Prop Creation !!! \n",filename); + printf("\n=======================================================\n"); + +/* + // create the new output file + tlFile output(new tlFileByteStream(filename, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + printf("Could not open %s for writing,unable to Save\n", filename); + exit(-1); + } + + // get the output wrapper chunk to write its data out + // to the file + outchunk->Write(&output); +*/ + delete inchunk; + delete outchunk; + delete p_dsglist; + return 1; + } + else + { + + printf("\n=======================================================\n"); + printf("\n=\tDSGmaker: Completed without ERRORS \n"); + printf("\n=======================================================\n"); + + // create the new output file + tlFile output(new tlFileByteStream(filename, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + printf("Could not open %s for writing\n", filename); + exit(-1); + } + + // get the output wrapper chunk to write its data out + // to the file + outchunk->Write(&output); + + // cleanup the no-longer-needed chunks + delete inchunk; + delete outchunk; + delete p_dsglist; + + + return 0; + } +} //end of main + + + +/********************************************************************/ +/* Helper Function to strip extra crap from the string */ +/********************************************************************/ + + +unsigned int rootname(const char * input,char* output) +{ + char source_name[max_length]; + char object_name1[max_length]; + char object_name2[max_length]; + char* token =NULL; + + //printf("Phase 1 get name \n"); + + //get the name of collision object + strcpy(source_name,input); + //cout<<"Source name: "<<source_name<<endl; + + //printf("smashing %s\n",source_name); + //smash up string to remove the number appended by Maya + //printf("strtok1\n"); + token=strtok(source_name,"_"); + strcpy(object_name1,token); + //printf("After stringtok :%s \n",object_name1); + + //printf("strcat1\n"); + //reform string + strcat(object_name1,"_"); + + + //printf("strtok2\n"); + token=strtok(NULL,"_"); + + if(token != NULL) + { + strcpy(object_name2,token); + //printf("After stringtok :%s \n",object_name2); + // printf("strcat2\n"); + strcat(object_name1,object_name2); + } + + //printf("strcpy\n"); + //set default vaules + + strcpy(output,object_name1); + //printf("processed name : %s\n",output); + return 0; +} + diff --git a/tools/MakePS2CD/PS2CD.bat b/tools/MakePS2CD/PS2CD.bat new file mode 100644 index 0000000..51a40d2 --- /dev/null +++ b/tools/MakePS2CD/PS2CD.bat @@ -0,0 +1,38 @@ +SET PS2DIR="..\..\Game\cd\PS2" +SET TEMPDISKDIR="d:\Burn\PS2Disk" +SET ISOPATH="d:\Burn\PS2ISO" +SET ISONAME="PS2" +SET LICENCE=".\licence.000" +SET MOVIESDIR=".\..\..\Game\ps2movies\placeholder_movies" + +ECHO////////////////////////////////////////////////////// +ECHO//MAKE PS2 DIrectory +ECHO////////////////////////////////////////////////////// +MD %TEMPDISKDIR% +ROBOCOPY %PS2DIR%\ %TEMPDISKDIR% /MIR /XD art /XD movies + +ECHO////////////////////////////////////////////////////// +ECHO//CEMENT ART +ECHO////////////////////////////////////////////////////// +..\..\game\libs\radcore\bin\filecementer.exe %TEMPDISKDIR%\art.rcf /basedir %PS2DIR% /add art\* +RD /s /q %TEMPDISKDIR%\art\ + +ECHO////////////////////////////////////////////////////// +ECHO//COPY Movies +ECHO////////////////////////////////////////////////////// +ROBOCOPY %MOVIESDIR%\ %TEMPDISKDIR%\MOVIES /MIR + +ECHO///////////////////////////////////////////////////// +ECHO//MAKE ISO IMAGE +ECHO///////////////////////////////////////////////////// +MD %ISOPATH% +DEL /q %ISOPATH%\%ISONAME%.iso +DEL /q %ISOPATH%\%ISONAME%.cue + +DEL %TEMPDISKDIR%\slps_123.45 +RENAME %TEMPDISKDIR%\srr2pr.elf slps_123.45 +CALL ee-strip %TEMPDISKDIR%\slps_123.45 + +DEL %TEMPDISKDIR%\*.elf + +CALL mkps2iso.exe -nolimit %TEMPDISKDIR% %ISOPATH%\\%ISONAME%.iso %LICENCE%
\ No newline at end of file diff --git a/tools/MakePS2CD/PS2DVD.bat b/tools/MakePS2CD/PS2DVD.bat new file mode 100644 index 0000000..dd70f85 --- /dev/null +++ b/tools/MakePS2CD/PS2DVD.bat @@ -0,0 +1,33 @@ +SET PS2DIR="..\..\Game\cd\PS2" +SET TEMPDISKDIR="d:\Burn\PS2Disk" +SET ISOPATH="d:\Burn\PS2ISO" +SET ISONAME="PS2" +SET LICENCE=".\licence.000" +SET MOVIESDIR=".\..\..\Game\ps2movies\real_movies" + +ECHO////////////////////////////////////////////////////// +ECHO//MAKE PS2 DIrectory +ECHO////////////////////////////////////////////////////// +MD %TEMPDISKDIR% +ROBOCOPY %PS2DIR%\ %TEMPDISKDIR% /MIR /XD art /XD movies + +ECHO////////////////////////////////////////////////////// +ECHO//CEMENT ART +ECHO////////////////////////////////////////////////////// +..\..\game\libs\radcore\bin\filecementer.exe %TEMPDISKDIR%\art.rcf /basedir %PS2DIR% /add art\* +RD /s /q %TEMPDISKDIR%\art\ + +ECHO////////////////////////////////////////////////////// +ECHO//COPY Movies +ECHO////////////////////////////////////////////////////// +ROBOCOPY %MOVIESDIR%\ %TEMPDISKDIR%\MOVIES /MIR + +ECHO///////////////////////////////////////////////////// +ECHO//STRIP ExE +ECHO///////////////////////////////////////////////////// +DEL %TEMPDISKDIR%\slps_123.45 +RENAME %TEMPDISKDIR%\srr2pr.elf slps_123.45 +CALL ee-strip %TEMPDISKDIR%\slps_123.45 + +DEL %TEMPDISKDIR%\*.elf + diff --git a/tools/MakePS2CD/licence.000 b/tools/MakePS2CD/licence.000 Binary files differnew file mode 100644 index 0000000..deced87 --- /dev/null +++ b/tools/MakePS2CD/licence.000 diff --git a/tools/MayaRules/Debug/MayaRules.log b/tools/MayaRules/Debug/MayaRules.log new file mode 100644 index 0000000..75c9160 --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.log @@ -0,0 +1,12 @@ +Build started 11/7/2015 5:44:20 PM. + 1>Project "G:\Code\Simpsons Hit&Run\tools\MayaRules\MayaRules.vcxproj" on node 3 (Build target(s)). + 1>CustomBuild: + Copying srr2rules to Maya + The system cannot find the path specified. + 0 file(s) copied. + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: "cmd.exe" exited with code 1. + 1>Done Building Project "G:\Code\Simpsons Hit&Run\tools\MayaRules\MayaRules.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.41 diff --git a/tools/MayaRules/Debug/MayaRules.tlog/MayaRules.lastbuildstate b/tools/MayaRules/Debug/MayaRules.tlog/MayaRules.lastbuildstate new file mode 100644 index 0000000..72cdac1 --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.tlog/MayaRules.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit +Debug|Win32|G:\Code\Simpsons Hit&Run\tools\| diff --git a/tools/MayaRules/Debug/MayaRules.tlog/custombuild.command.1.tlog b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.command.1.tlog Binary files differnew file mode 100644 index 0000000..cc06b25 --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.command.1.tlog diff --git a/tools/MayaRules/Debug/MayaRules.tlog/custombuild.read.1.tlog b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.read.1.tlog @@ -0,0 +1 @@ +ÿþ
\ No newline at end of file diff --git a/tools/MayaRules/Debug/MayaRules.tlog/custombuild.write.1.tlog b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.tlog/custombuild.write.1.tlog @@ -0,0 +1 @@ +ÿþ
\ No newline at end of file diff --git a/tools/MayaRules/Debug/MayaRules.tlog/unsuccessfulbuild b/tools/MayaRules/Debug/MayaRules.tlog/unsuccessfulbuild new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/MayaRules/Debug/MayaRules.tlog/unsuccessfulbuild diff --git a/tools/MayaRules/MayaRules.dsp b/tools/MayaRules/MayaRules.dsp new file mode 100644 index 0000000..c170f59 --- /dev/null +++ b/tools/MayaRules/MayaRules.dsp @@ -0,0 +1,118 @@ +# Microsoft Developer Studio Project File - Name="MayaRules" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=MayaRules - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "MayaRules.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "MayaRules.mak" CFG="MayaRules - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "MayaRules - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "MayaRules - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "MayaRules" +# PROP Scc_LocalPath ".." +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "MayaRules - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "MayaRules - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "MayaRules - Win32 Release" +# Name "MayaRules - Win32 Debug" +# Begin Group "Rules" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\MayaTools\Maya4.0\scripts\srr2rules.txt + +!IF "$(CFG)" == "MayaRules - Win32 Release" + +# Begin Custom Build - Copying $(InputName) to Maya +InputPath=..\MayaTools\Maya4.0\scripts\srr2rules.txt +InputName=srr2rules + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) c:\aw\maya4.0\scripts\$(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "MayaRules - Win32 Debug" + +# Begin Custom Build - Copying $(InputName) to Maya +InputPath=..\MayaTools\Maya4.0\scripts\srr2rules.txt +InputName=srr2rules + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy $(InputPath) c:\aw\maya4.0\scripts\$(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/MayaRules/MayaRules.vcproj b/tools/MayaRules/MayaRules.vcproj new file mode 100644 index 0000000..e1263d3 --- /dev/null +++ b/tools/MayaRules/MayaRules.vcproj @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="MayaRules" + SccProjectName="Perforce Project" + SccAuxPath="" + SccLocalPath=".." + SccProvider="MSSCCI:Perforce SCM"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/MayaRules.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="odbc32.lib odbccp32.lib" + OutputFile=".\Debug/MayaRules.exe" + LinkIncremental="2" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/MayaRules.pdb" + SubSystem="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/MayaRules.tlb"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/MayaRules.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="odbc32.lib odbccp32.lib" + OutputFile=".\Release/MayaRules.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/MayaRules.pdb" + SubSystem="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/MayaRules.tlb"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Rules" + Filter=""> + <File + RelativePath="..\MayaTools\Maya4.0\scripts\srr2rules.txt"> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copying $(InputName) to Maya" + CommandLine="copy "$(InputPath)" "c:\aw\maya4.0\scripts\$(InputName)"" + Outputs="$(InputName)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copying $(InputName) to Maya" + CommandLine="copy "$(InputPath)" "c:\aw\maya4.0\scripts\$(InputName)"" + Outputs="$(InputName)"/> + </FileConfiguration> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/MayaRules/MayaRules.vcxproj b/tools/MayaRules/MayaRules.vcxproj new file mode 100644 index 0000000..05932a4 --- /dev/null +++ b/tools/MayaRules/MayaRules.vcxproj @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <SccProjectName> + </SccProjectName> + <SccAuxPath /> + <SccLocalPath> + </SccLocalPath> + <SccProvider> + </SccProvider> + <ProjectGuid>{F456A1E8-974F-4D56-BB57-3D944DF8DCB1}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>false</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>false</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>.\Debug\</OutDir> + <IntDir>.\Debug\</IntDir> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>.\Release\</OutDir> + <IntDir>.\Release\</IntDir> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Debug/MayaRules.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Debug/</AssemblerListingLocation> + <ObjectFileName>.\Debug/</ObjectFileName> + <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>.\Debug/MayaRules.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>.\Debug/MayaRules.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + </Link> + <Midl> + <TypeLibraryName>.\Debug/MayaRules.tlb</TypeLibraryName> + </Midl> + <ResourceCompile> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Release/MayaRules.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Release/</AssemblerListingLocation> + <ObjectFileName>.\Release/</ObjectFileName> + <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>.\Release/MayaRules.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <ProgramDatabaseFile>.\Release/MayaRules.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + </Link> + <Midl> + <TypeLibraryName>.\Release/MayaRules.tlb</TypeLibraryName> + </Midl> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemGroup> + <CustomBuild Include="..\MayaTools\Maya4.0\scripts\srr2rules.txt"> + <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Copying %(Filename) to Maya</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "c:\aw\maya4.0\scripts\%(Filename)"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename);%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Copying %(Filename) to Maya</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "c:\aw\maya4.0\scripts\%(Filename)"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename);%(Outputs)</Outputs> + </CustomBuild> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/tools/MayaRules/MayaRules.vcxproj.filters b/tools/MayaRules/MayaRules.vcxproj.filters new file mode 100644 index 0000000..eb4a3e9 --- /dev/null +++ b/tools/MayaRules/MayaRules.vcxproj.filters @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Rules"> + <UniqueIdentifier>{a9ebfc65-4204-4ed9-b6dc-b5678e2a73a1}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\MayaTools\Maya4.0\scripts\srr2rules.txt"> + <Filter>Rules</Filter> + </CustomBuild> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/bin/plug-ins/objectsnapper.mll b/tools/MayaTools/Maya4.0/bin/plug-ins/objectsnapper.mll Binary files differnew file mode 100644 index 0000000..db95b36 --- /dev/null +++ b/tools/MayaTools/Maya4.0/bin/plug-ins/objectsnapper.mll diff --git a/tools/MayaTools/Maya4.0/bin/plug-ins/trackeditor.mll b/tools/MayaTools/Maya4.0/bin/plug-ins/trackeditor.mll Binary files differnew file mode 100644 index 0000000..ad21094 --- /dev/null +++ b/tools/MayaTools/Maya4.0/bin/plug-ins/trackeditor.mll diff --git a/tools/MayaTools/Maya4.0/bin/plug-ins/worldbuilder.mll b/tools/MayaTools/Maya4.0/bin/plug-ins/worldbuilder.mll Binary files differnew file mode 100644 index 0000000..87703bd --- /dev/null +++ b/tools/MayaTools/Maya4.0/bin/plug-ins/worldbuilder.mll diff --git a/tools/MayaTools/Maya4.0/extras/icons/bob_Mr_T.bmp b/tools/MayaTools/Maya4.0/extras/icons/bob_Mr_T.bmp Binary files differnew file mode 100644 index 0000000..3d39370 --- /dev/null +++ b/tools/MayaTools/Maya4.0/extras/icons/bob_Mr_T.bmp diff --git a/tools/MayaTools/Maya4.0/icons/actionlocator.bmp b/tools/MayaTools/Maya4.0/icons/actionlocator.bmp Binary files differnew file mode 100644 index 0000000..03ca285 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/actionlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/breakablecameralocator.bmp b/tools/MayaTools/Maya4.0/icons/breakablecameralocator.bmp Binary files differnew file mode 100644 index 0000000..bf05f34 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/breakablecameralocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/carstartlocator.bmp b/tools/MayaTools/Maya4.0/icons/carstartlocator.bmp Binary files differnew file mode 100644 index 0000000..43bfc06 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/carstartlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/directionallocator.bmp b/tools/MayaTools/Maya4.0/icons/directionallocator.bmp Binary files differnew file mode 100644 index 0000000..5d663b5 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/directionallocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/eventlocator.bmp b/tools/MayaTools/Maya4.0/icons/eventlocator.bmp Binary files differnew file mode 100644 index 0000000..a9c46ba --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/eventlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/fovlocator.bmp b/tools/MayaTools/Maya4.0/icons/fovlocator.bmp Binary files differnew file mode 100644 index 0000000..0e85e2a --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/fovlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/genericlocator.bmp b/tools/MayaTools/Maya4.0/icons/genericlocator.bmp Binary files differnew file mode 100644 index 0000000..2c598d6 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/genericlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/interiorlocator.bmp b/tools/MayaTools/Maya4.0/icons/interiorlocator.bmp Binary files differnew file mode 100644 index 0000000..47a2f9b --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/interiorlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/occlusionlocator.bmp b/tools/MayaTools/Maya4.0/icons/occlusionlocator.bmp Binary files differnew file mode 100644 index 0000000..4148247 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/occlusionlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/pedgrouplocator.bmp b/tools/MayaTools/Maya4.0/icons/pedgrouplocator.bmp Binary files differnew file mode 100644 index 0000000..b420e53 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/pedgrouplocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/scriptlocator.bmp b/tools/MayaTools/Maya4.0/icons/scriptlocator.bmp Binary files differnew file mode 100644 index 0000000..17ce55e --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/scriptlocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/staticcameralocator.bmp b/tools/MayaTools/Maya4.0/icons/staticcameralocator.bmp Binary files differnew file mode 100644 index 0000000..909a577 --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/staticcameralocator.bmp diff --git a/tools/MayaTools/Maya4.0/icons/zonelocator.bmp b/tools/MayaTools/Maya4.0/icons/zonelocator.bmp Binary files differnew file mode 100644 index 0000000..4a17b3a --- /dev/null +++ b/tools/MayaTools/Maya4.0/icons/zonelocator.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEActionEventLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEActionEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..4c1a413 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEActionEventLocatorNodeTemplate.mel @@ -0,0 +1,34 @@ +global proc AEActionEventLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + + editorTemplate -addControl "exportTransform"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Action Attribute" -collapse false; + editorTemplate -addControl "actionObject"; + editorTemplate -addControl "joint"; + editorTemplate -addControl "action"; + editorTemplate -addControl "buttonInput"; + editorTemplate -addControl "shouldTransform"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel new file mode 100644 index 0000000..82a08f2 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel @@ -0,0 +1,20 @@ +global proc AEBreakableCameraLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "FOV Settings" -collapse 0; + editorTemplate -addControl "fov"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AECarStartLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AECarStartLocatorNodeTemplate.mel new file mode 100644 index 0000000..a3e9f04 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AECarStartLocatorNodeTemplate.mel @@ -0,0 +1,21 @@ +global proc AECarStartLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Car Start Data" -collapse 0; + editorTemplate -addControl "isParked"; + editorTemplate -addControl "specialName"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEDirectionalLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEDirectionalLocatorNodeTemplate.mel new file mode 100644 index 0000000..cd9d34e --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEDirectionalLocatorNodeTemplate.mel @@ -0,0 +1,16 @@ +global proc AEDirectionalLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEEventLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..9d6443b --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEEventLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEEventLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Event Attributes" -collapse false; + editorTemplate -addControl "event"; + editorTemplate -addControl "extraData"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEFOVLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEFOVLocatorNodeTemplate.mel new file mode 100644 index 0000000..c02a84a --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEFOVLocatorNodeTemplate.mel @@ -0,0 +1,30 @@ +global proc AEFOVLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "FOV Settings" -collapse 0; + editorTemplate -addControl "fov"; + editorTemplate -addControl "time"; + editorTemplate -addControl "rate"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEGenericLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEGenericLocatorNodeTemplate.mel new file mode 100644 index 0000000..c1ed3cb --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEGenericLocatorNodeTemplate.mel @@ -0,0 +1,16 @@ +global proc AEGenericLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel new file mode 100644 index 0000000..f23f6ee --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEInteriorEntranceLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Interior Attribute" -collapse false; + editorTemplate -addControl "zone"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEIntersectionLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEIntersectionLocatorNodeTemplate.mel new file mode 100644 index 0000000..740b05f --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEIntersectionLocatorNodeTemplate.mel @@ -0,0 +1,20 @@ +global proc AEIntersectionLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Intersection Attributes" -collapse 0; + + editorTemplate -addControl "IntersectionType"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); + + editorTemplate -suppress "localPosition"; +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEOcclusionLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEOcclusionLocatorNodeTemplate.mel new file mode 100644 index 0000000..5833530 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEOcclusionLocatorNodeTemplate.mel @@ -0,0 +1,29 @@ + +global proc AEOcclusionLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNewOcclude" + "AEWBTriggerButtonReplaceOcclude" + "message"; + + editorTemplate -callCustom "AEWBTriggerButtonNewVisible" + "AEWBTriggerButtonReplaceVisible" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEPedGroupLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEPedGroupLocatorNodeTemplate.mel new file mode 100644 index 0000000..1dcfcce --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEPedGroupLocatorNodeTemplate.mel @@ -0,0 +1,26 @@ +global proc AEPedGroupLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Ped Group Attributes" -collapse 0; + editorTemplate -addControl "group"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AERailCamLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AERailCamLocatorNodeTemplate.mel new file mode 100644 index 0000000..7d3178c --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AERailCamLocatorNodeTemplate.mel @@ -0,0 +1,56 @@ +global proc AERailCamLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Rail Attributes" -collapse false; + editorTemplate -addControl "cutInOut"; + editorTemplate -addControl "carOnly"; + editorTemplate -addControl "onFootOnly"; + editorTemplate -addControl "reset"; + editorTemplate -addControl "noFOV"; + editorTemplate -addControl "camRail"; + editorTemplate -addControl "behaviour"; + editorTemplate -addControl "minRadius"; + editorTemplate -addControl "maxRadius"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "trackRail"; + editorTemplate -addControl "trackDist"; + editorTemplate -addControl "reverseSense"; + editorTemplate -addControl "fieldOfView"; + editorTemplate -addControl "facingOffset"; + editorTemplate -addControl "axisPlay"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "positionLag"; + editorTemplate -addControl "targetLag"; + + editorTemplate -addSeparator; + + editorTemplate -addControl"active"; + editorTemplate -addControl "target"; + + editorTemplate -addSeparator; + editorTemplate -addControl "transitionTo"; + + editorTemplate -callCustom "AEWBTargetSelectNew" + "AEWBTargetSelectReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AERoadNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AERoadNodeTemplate.mel new file mode 100644 index 0000000..27c4431 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AERoadNodeTemplate.mel @@ -0,0 +1,29 @@ +global proc AERoadNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Road Attributes" -collapse 0; + + editorTemplate -addControl "IntersectionStart"; + editorTemplate -addControl "IntersectionEnd"; + editorTemplate -addControl "density"; + editorTemplate -addControl "speed"; + editorTemplate -addControl "difficulty"; + editorTemplate -addControl "shortCut"; + + editorTemplate -callCustom "AETEShowRoadSegNew" + "AETEShowRoadSegReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); + + editorTemplate -suppress "localPosition"; +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEScriptLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEScriptLocatorNodeTemplate.mel new file mode 100644 index 0000000..2e800c8 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEScriptLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEScriptLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Script Attributes" -collapse false; + editorTemplate -addControl "script"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AESplineLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AESplineLocatorNodeTemplate.mel new file mode 100644 index 0000000..57e5e2a --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AESplineLocatorNodeTemplate.mel @@ -0,0 +1,23 @@ +global proc AESplineLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEStaticCameraLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEStaticCameraLocatorNodeTemplate.mel new file mode 100644 index 0000000..d611957 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEStaticCameraLocatorNodeTemplate.mel @@ -0,0 +1,52 @@ +global proc AEStaticCameraLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Camera Attributes" -collapse false; + editorTemplate -addControl "cutInOut"; + editorTemplate -addControl "carOnly"; + editorTemplate -addControl "onFootOnly"; + editorTemplate -addControl "oneShot"; + editorTemplate -addControl "noFOV"; + editorTemplate -addControl "fieldOfView"; + editorTemplate -addControl "facingOffset"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "targetLag"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "active"; + + editorTemplate -addControl "target"; + editorTemplate -addControl "tracking"; + + editorTemplate -addSeparator; + editorTemplate -addControl "transitionTo"; + + editorTemplate -callCustom "AEWBTargetSelectNew" + "AEWBTargetSelectReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AETELocatorSuppress.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETELocatorSuppress.mel new file mode 100644 index 0000000..13a6d00 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETELocatorSuppress.mel @@ -0,0 +1,37 @@ +global proc AETELocatorSuppress( string $nodeName ) +{ + editorTemplate -suppress "inputTranslate"; + editorTemplate -suppress "input"; + editorTemplate -suppress "caching"; + editorTemplate -suppress "nodeState"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "template"; + editorTemplate -suppress "ghosting"; + editorTemplate -suppress "instObjGroups"; + editorTemplate -suppress "compInstObjGroups"; + editorTemplate -suppress "castsShadows"; + editorTemplate -suppress "receiveShadows"; + editorTemplate -suppress "depthJitter"; + editorTemplate -suppress "motionBlur"; + editorTemplate -suppress "renderInfo"; + editorTemplate -suppress "primaryVisibility"; + editorTemplate -suppress "visibleInReflections"; + editorTemplate -suppress "visibleInRefractions"; + editorTemplate -suppress "geometryAntialiasingOverride"; + editorTemplate -suppress "antialiasingLevel"; + editorTemplate -suppress "shadingSamplesOverride"; + editorTemplate -suppress "shadingSamples"; + editorTemplate -suppress "maxShadingSamples"; + editorTemplate -suppress "volumeSamplesOverride"; + editorTemplate -suppress "volumeSamples"; + editorTemplate -suppress "maxVisibilitySamplesOverride"; + editorTemplate -suppress "maxVisibilitySamples"; + editorTemplate -suppress "boundingBoxScale"; + editorTemplate -suppress "drawOverride"; + editorTemplate -suppress "useObjectColor"; + editorTemplate -suppress "objectColor"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "lodVisibility"; +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AETEShowRoadSegButton.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETEShowRoadSegButton.mel new file mode 100644 index 0000000..3ffbeb5 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETEShowRoadSegButton.mel @@ -0,0 +1,29 @@ +global proc AETEShowRoadSegNew( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "te_MCB_ShowRoadFromSelected()"; + + button -label "Show Road Segments" -command $command TEShowRoadSegsButton; + + setParent ..; + + select $names[0]; +} + + +global proc AETEShowRoadSegReplace( string $nodeName ) +{ + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "te_MCB_ShowRoadFromSelected"; + + button -e -command $command TEShowRoadSegsButton; + + select $names[0]; +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AETreelineShapeNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETreelineShapeNodeTemplate.mel new file mode 100644 index 0000000..766ed13 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETreelineShapeNodeTemplate.mel @@ -0,0 +1,41 @@ +global proc AETreelineShapeNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Treeline Attributes" -collapse false; + + editorTemplate -addControl "material"; + + editorTemplate -addControl "uscale"; + + editorTemplate -addControl "height"; + + editorTemplate -suppress "colour"; + + editorTemplate -suppress "alpha"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AETELocatorSuppress( $nodeName ); + + editorTemplate -suppress "controlPoints"; + editorTemplate -suppress "weights"; + editorTemplate -suppress "uvSet"; + editorTemplate -suppress "tweak"; + editorTemplate -suppress "relativeTweak"; + editorTemplate -suppress "currentUVSet"; + editorTemplate -suppress "doubleSided"; + editorTemplate -suppress "opposite"; + editorTemplate -suppress "smoothShading"; + editorTemplate -suppress "featureDisplacement"; + editorTemplate -suppress "initialSampleRate"; + editorTemplate -suppress "textureThreshold"; + editorTemplate -suppress "normalThreshold"; + editorTemplate -suppress "extraSampleRate"; +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AETriggerVolumeNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETriggerVolumeNodeTemplate.mel new file mode 100644 index 0000000..4166b0e --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AETriggerVolumeNodeTemplate.mel @@ -0,0 +1,18 @@ +global proc AETriggerVolumeNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Trigger Volume Attributes" -collapse 0; + AElocatorCommon $nodeName; + + editorTemplate -addControl "type"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBLocatorSuppress.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBLocatorSuppress.mel new file mode 100644 index 0000000..e9784d8 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBLocatorSuppress.mel @@ -0,0 +1,37 @@ +global proc AEWBLocatorSuppress( string $nodeName ) +{ + editorTemplate -suppress "inputTranslate"; + editorTemplate -suppress "input"; + editorTemplate -suppress "caching"; + editorTemplate -suppress "nodeState"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "template"; + editorTemplate -suppress "ghosting"; + editorTemplate -suppress "instObjGroups"; + editorTemplate -suppress "compInstObjGroups"; + editorTemplate -suppress "castsShadows"; + editorTemplate -suppress "receiveShadows"; + editorTemplate -suppress "depthJitter"; + editorTemplate -suppress "motionBlur"; + editorTemplate -suppress "renderInfo"; + editorTemplate -suppress "primaryVisibility"; + editorTemplate -suppress "visibleInReflections"; + editorTemplate -suppress "visibleInRefractions"; + editorTemplate -suppress "geometryAntialiasingOverride"; + editorTemplate -suppress "antialiasingLevel"; + editorTemplate -suppress "shadingSamplesOverride"; + editorTemplate -suppress "shadingSamples"; + editorTemplate -suppress "maxShadingSamples"; + editorTemplate -suppress "volumeSamplesOverride"; + editorTemplate -suppress "volumeSamples"; + editorTemplate -suppress "maxVisibilitySamplesOverride"; + editorTemplate -suppress "maxVisibilitySamples"; + editorTemplate -suppress "boundingBoxScale"; + editorTemplate -suppress "drawOverride"; + editorTemplate -suppress "useObjectColor"; + editorTemplate -suppress "objectColor"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "lodVisibility"; +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBSelectTarget.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBSelectTarget.mel new file mode 100644 index 0000000..d1cd428 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBSelectTarget.mel @@ -0,0 +1,34 @@ +global proc wb_BCB_SelectTarget( string $nodeName ) +{ + select $nodeName; + string $actNodes[] = `ls -sl -o`; + + string $text = `textField -q -text WBTargetName`; + + print ($text + "\n"); + + if ( $text != "" ) + { + evalEcho ("setAttr " + $actNodes[0] + ".target -type \"string\" \"" + $text + "\""); + } + + select $actNodes[0]; +} + +global proc AEWBTargetSelectNew( string $nodeName ) +{ + columnLayout -adj true; + + textField -ed true WBTargetName; + string $command = "wb_BCB_SelectTarget( \"" + $nodeName + "\" )"; + button -label "Select Target" -command $command WBSelectTargetButton; + + setParent ..; +} + +global proc AEWBTargetSelectReplace( string $nodeName ) +{ + textField -e -text "" WBTargetName; + string $command = "wb_BCB_SelectTarget( \"" + $nodeName + "\" )"; + button -e -command $command WBSelectTargetButton; +} diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBTriggerButton.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBTriggerButton.mel new file mode 100644 index 0000000..ddb862a --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEWBTriggerButton.mel @@ -0,0 +1,94 @@ +global int $gIsItVisibler = 0; + +global proc AEWBTriggerButtonNew( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -label "Attach Triggers" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + + +global proc AEWBTriggerButtonReplace( string $nodeName ) +{ + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc AEWBTriggerButtonNewOcclude( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -label "Add Occlusion Volume" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + +global proc AEWBTriggerButtonReplaceOcclude( string $nodeName ) +{ + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc AEWBTriggerButtonNewVisible( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 1)"; + + button -label "Add Visibler Volume" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + +global proc AEWBTriggerButtonReplaceVisible( string $nodeName ) +{ + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 1)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc int IsVisibler() +{ + global int $gIsItVisibler; + + return $gIsItVisibler; +} diff --git a/tools/MayaTools/Maya4.0/scripts/AETemplates/AEZoneEventLocatorNodeTemplate.mel b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEZoneEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..869066a --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/AETemplates/AEZoneEventLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEZoneEventLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Zone Attribute" -collapse false; + editorTemplate -addControl "zone"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/ajrAutoSave.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/ajrAutoSave.mel new file mode 100644 index 0000000..d3f7f0d --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/ajrAutoSave.mel @@ -0,0 +1,532 @@ +/* This file downloaded from Highend3d.com +'' +'' Highend3d.com File Information: +'' +'' Script Name: ajrAutoSave v1.3 +'' Author: Andy Rawling +'' Last Updated: July 17, 2001 +'' Update/Change this file at: +'' http://www.highend3d.com/maya/mel/?section=utilities#198 +'' +'' Please do not alter any information above this line +'' it is generated dynamically by Highend3d.com and will +'' be changed automatically on any updates. +*/ + +// ajrAutoSave.mel +// v 1.3 July 16 2001 +// +// Tested on Maya2.5Irix Maya2.5.1NT Maya3.0Irix +// +// Provides automatic backup of scene files. +// +// When this script is first called, it creates two MEL scriptJobs to run +// short procedures whenever the user selects or de-selects an object, and +// when they change the current time. These jobs trigger backups in two +// ways, either based on the number of times the user selects objects, or +// on the amount of time since the last save. +// The script also modifies your main File menu, adding File->Autosave options... +// to the end. Choosing this menu command brings up the configuration GUI +// (by running the same script again, but that's not important right now). +// +// In selection mode, the script keeps a count of how many times the selection +// has changed, and will trigger an automatic scene backup when the number of +// selection changes passes the limit set by the user. +// +// In time mode, the script checks the time whenever the selection or the +// current time is changed by the user. The scene is backed up when the amount +// of time since the last save passes the limit +// +// This script is designed to be called from your 'userSetup.mel' script. +// +// Configuration +// ------------- +// If the script is run again, it will bring up a GUI which allows you to +// modify the way that AutoSave works. The options are: +// o Enable AutoSave +// o Save After XX minutes/selects +// o Keep up to XX backups +// o Save in XX +// o notify when saving +// +// +// Enable AutoSave: Check this option off to disable AutoSave (default=ON) +// Save After XX (things): Set the number of things which happen before the +// autosave is triggered - either the user changing which items are +// selected, or the number of minutes since the last save (default=15) +// (minutes/selects): What sort of things are we using to spot changes? Either +// number of times the selection changes, or number of minutes +// passed since the last save (default=minutes , but see the caveats +// below) +// Keep up to XX backups: AutoSave keeps a rolling sequence of backups. The +// number of separate backups can be changed here +// (default=5) +// Save in XXXX: Choose the folder where you want the backups to be kept. +// This can be relative to your current project (default="scenes") +// notify when saving: Bring up a small window to tell you when a backup is being +// made (default=OFF) +// +// +// Caveats +// ------- +// Maya has no clock event, so when the save is time-based the clock is only +// checked when the selection or the current time (as in time slider) changes. +// +// Changes (* is a highend3d release) +// ------- +// v1.3* Autosaving no longer clears the current tool - cheers to Roger Klado +// Feedback line is now more informative as the GUI settings are changed. +// v1.2 I've got M3.0, so here there are annotations all over the GUI. Removed +// the 'Include in File menu` option from the GUI - it's always included +// now. Notify defaults to off now (too many hardware render mess-ups) +// v1.1 Layout is more Irix/Motif-friendly now (was a bit squashed) +// v1.0* Fixed minor bug when the scene wasn't saved, choosing not to save +// would switch the autosave off. New behavior is to nag the user again +// after the trigger period. Now uses a timer as well as selection counter +// to trigger backups. +// +// Disclaimer +// ---------- +// This script is unsupported; neither me nor (especially) my employer accept +// liability for damage or loss resulting from its use or misuse. Use it at +// your own risk. That said - if you like it, spot a bug in it or think it +// could be improved please let me know. +// +// Andy Rawling andrew.rawling@_CUT_THIS_BIT_OUT_bigfoot.com +// Animator +// + +global proc ajrAS_SelectionHasChanged() { +// This is called even when AutoSave is disabled, it just doesn't perform the save in this case +// We're checking for time passing as well as selection changes here! + + if((`optionVar -exists "ajrAS_iSelectTrigger"`) && (`optionVar -exists "ajrAS_iEnabled"`) && (`optionVar -exists "ajrAS_iUseTime"`)) { + + if((`optionVar -query "ajrAS_iUseTime"`)) { + // We're using time to trigger saves + global float $ajrAS_fLastSave; //Absolute time of the last save (or script startup) + float $fElapsed; + + $fElapsed = `timerX -startTime $ajrAS_fLastSave`; + if(($fElapsed / 60.0) > `optionVar -query "ajrAS_iSelectTrigger"`) { + if(`optionVar -query "ajrAS_iEnabled"`) + if (`ajrAS_SaveBackupScene`) + $ajrAS_fLastSave = `timerX`; + } + } else { + // Using the number of selection changes to trigger + global int $ajrAS_iSelectCount; // The selection change counter + + $ajrAS_iSelectCount ++; + if ($ajrAS_iSelectCount >= `optionVar -query "ajrAS_iSelectTrigger"`) { + if(`optionVar -query "ajrAS_iEnabled"`) + if (`ajrAS_SaveBackupScene`) + $ajrAS_iSelectCount = 0; + } + } + } +} + +global proc ajrAS_CurrentTimeHasChanged() { +// This is called even when AutoSave is disabled, it just doesn't perform the save in this case +// We're only interested in time passing here + + if((`optionVar -exists "ajrAS_iSelectTrigger"`) && (`optionVar -exists "ajrAS_iEnabled"`)) { + + if((`optionVar -query "ajrAS_iUseTime"`)) { + global float $ajrAS_fLastSave; //Absolute time of the last save (or script startup) + float $fElapsed; + + $fElapsed = `timerX -startTime $ajrAS_fLastSave`; + if(($fElapsed / 60.0) > `optionVar -query "ajrAS_iSelectTrigger"`) { + if(`optionVar -query "ajrAS_iEnabled"`) + if (`ajrAS_SaveBackupScene`) + $ajrAS_fLastSave = `timerX`; + } + } + } +} + +global proc int ajrAS_SaveBackupScene() { +// Save the backup file +// This routine is called when the number of events reaches the level set by the user +// to trigger a backup save. +// The save routine appends "_AutoSave#1" to the scene name of the first backup, then +// #2, #3 etc, until the number of saves reaches the maximum limit, when the number +// resets to 1 again. +// If the notifier is switched on, a message window is created for the duration of the\ +// save. Either way, a message is shown on the command feedback line +// + global int $ajrAS_iBackupNumber; // Number of the current backup file + string $sSceneName; // Full name (including directory path) of the scene file + string $sBackupName; // Name (not inc. path or extension) of the backup scene + string $sBackupDir; + string $sWorkingTool; + int $iReturn = 0; + + // If these values are not in the prefs, then this function should never have been called. Check anyway. + if((`optionVar -exists "ajrAS_iSaveCopies"`) && (`optionVar -exists "ajrAS_iNotify"`) && (`optionVar -exists "ajrAS_sBackupDir"`)) { + + $sSceneName = `file -query -sceneName`; + // If the scene has no name (hasn't been saved yet) then prompt to do a "Save As" + if($sSceneName == "") { + string $sReturn = `confirmDialog -title "AutoSave" + -message "This scene has not been saved.\nAutoSave will not back up an unsaved scene\n\nDo you want to save your scene now?" + -button "Yes" + -button "No" + -button "Configure" + -defaultButton "Yes" + -cancelButton "No" + -dismissString "No"`; + switch($sReturn) { + + case "Configure": + ajrAS_GUI; + break; + + case "Yes": + projectViewer("SaveAs"); + break; + + case "No": + // Reset the event counter + // The user will be nagged again shortly + $iReturn = 1; + break; + } + } else { + $sBackupDir = `optionVar -query "ajrAS_sBackupDir"`; + if (`file -query -exists $sBackupDir`) { + $sWorkingTool = `currentCtx`; + $sBackupName = (`optionVar -query "ajrAS_sBackupDir"` + "/" + `file -query -namespace` + "_AutoSave#" + $ajrAS_iBackupNumber); + if(`optionVar -query "ajrAS_iNotify"`) + ajrAS_MakeNotifyWindow($sBackupName); + print("Auto saving file: " + $sBackupName + ".\n"); + file -rename $sBackupName; + file -save -type mayaBinary -defaultExtensions true; + $iReturn = 1; + file -rename $sSceneName; + $ajrAS_iBackupNumber ++; + if ($ajrAS_iBackupNumber > `optionVar -query "ajrAS_iSaveCopies"`) + $ajrAS_iBackupNumber = 1; + if(`optionVar -query "ajrAS_iNotify"`) { + deleteUI ui_ajrAS_NotifyWindow; + } + setToolTo $sWorkingTool; + } else { + ajrAS_CheckBackupDir; + } + } + } + return ($iReturn); +} + +global proc ajrAS_MakeNotifyWindow(string $sFileName) { + + if (`window -exists ui_ajrAS_NotifyWindow`) + deleteUI ui_ajrAS_NotifyWindow; + + window -title ("Saving backup: " + $sFileName + ", please wait...") + -iconName "Saving" + -widthHeight 500 25 + -menuBar false + ui_ajrAS_NotifyWindow; + + showWindow ui_ajrAS_NotifyWindow; +} + +global proc ajrAS_Reset() { +// Reset GUI fields & prefs to defaults. + checkBox -edit -value on ui_ajrAS_iEnabled; + intField -edit -value 15 ui_ajrAS_iSelectTrigger; + optionMenu -edit -select 2 ui_ajrAS_type; + intField -edit -value 5 ui_ajrAS_iSaveCopies; + checkBox -edit -value on ui_ajrAS_iNotify; + textField -edit -fileName "scenes" ui_ajrAS_sBackupDir; + ajrAS_Update; + $ajrAS_iSelectCount = 0; +} + +global proc ajrAS_Update() { +// Update the prefs settings + optionVar -intValue "ajrAS_iEnabled" `checkBox -query -value ui_ajrAS_iEnabled`; + optionVar -intValue "ajrAS_iSelectTrigger" `intField -query -value ui_ajrAS_iSelectTrigger`; + optionVar -intValue "ajrAS_iUseTime" (`optionMenu -query -value ui_ajrAS_type` == "minutes"); + optionVar -intValue "ajrAS_iSaveCopies" `intField -query -value ui_ajrAS_iSaveCopies`; + optionVar -intValue "ajrAS_iNotify" `checkBox -query -value ui_ajrAS_iNotify`; + optionVar -stringValue "ajrAS_sBackupDir" `textField -query -fileName ui_ajrAS_sBackupDir`; + string $sReportStr = "AutoSave: "; + if(! `optionVar -query "ajrAS_iEnabled"`) + $sReportStr += ("disabled.\n"); + else { + ajrAS_SelectionHasChanged; + ajrAS_CheckBackupDir; + $sReportStr += ("every " + `optionVar -query "ajrAS_iSelectTrigger"` + " "); + if((`optionVar -query "ajrAS_iUseTime"`)) { + global float $ajrAS_fLastSave; //Absolute time of the last save (or script startup) + $sReportStr += ("minutes (next in "); + $sReportStr += ((int)(`optionVar -query "ajrAS_iSelectTrigger"` - (`timerX -startTime $ajrAS_fLastSave` / 60.0)) + "), "); + } else { + global int $ajrAS_iSelectCount; // The selection change counter + $sReportStr += ("selects (next in "); + $sReportStr += ((`optionVar -query "ajrAS_iSelectTrigger"` - ($ajrAS_iSelectCount)) + "), "); + } + $sReportStr += ("keep " + `optionVar -query "ajrAS_iSaveCopies"` + " copies in " + `optionVar -query "ajrAS_sBackupDir"` + ".\n"); + } + print $sReportStr; +} + +global proc int ajrAS_SetBackupDir(string $sDirName, string $sDirType) { +// Callback function for 'fileBrowser' call on backup directory chooser + textField -edit -fileName `workspace -projectPath $sDirName` ui_ajrAS_sBackupDir; + ajrAS_Update; + return true; +} + +global proc int ajrAS_CheckBackupDir() { +// Check that the backup location is valid +// If not, give the option of creating the backup directory, changing the location +// or just carrying on (in which cast the save doesn't happen) + string $sBackupDir; + int $iReturn; + + $sBackupDir = `optionVar -query "ajrAS_sBackupDir"`; + if (! `file -query -exists $sBackupDir`) { + string $sQuestion; + string $sAnswer; + $sQuestion = "Your backup folder, (" + $sBackupDir + ") doesn't exist.\n" + + "Would you like to create this folder, or use select a new location?\n" + + "\n" + + "(If you choose to do neither, saving will be disabled)"; + + $sAnswer = `confirmDialog -title "AutoSave" + -message $sQuestion + -button "Create" + -button "Re-Select" + -button "Forget it" + -defaultButton "Re-Select" + -cancelButton "Forget It" + -dismissString "Forget It"`; + + switch($sAnswer) { + case "Create": + // Try to create the folder (no return value to check success) + workspace -create `workspace -expandName $sBackupDir`; + // Call this procedure again to see if it worked + ajrAS_CheckBackupDir; + break; + case "Re-Select": + optionVar -stringValue "ajrAS_sBackupDir" "scenes"; + if (`window -exists ui_ajrAS`) + textField -edit -fileName "scenes" ui_ajrAS_sBackupDir; + else + ajrAS_GUI; + break; + default: + if (`window -exists ui_ajrAS`) + checkBox -edit -value off ui_ajrAS_iEnabled; + optionVar -intValue "ajrAS_iEnabled" off; + $iReturn = 0; + break; + } + + } else + $iReturn = 1; + + return $iReturn; +} + +global proc ajrAS_FileMenu() { +// Add or remove the AutoSave item from the main File menu + global string $gMainFileMenu; // Name of Maya 'File' menu + + if(`menuItem -exists ui_ajrAS_FileAutoSaveSeperator`) + deleteUI ui_ajrAS_FileAutoSaveSeperator; + if(`menuItem -exists ui_ajrAS_FileAutoSaveMenu`) + deleteUI ui_ajrAS_FileAutoSaveMenu; + + menuItem -parent $gMainFileMenu + -divider true + ui_ajrAS_FileAutoSaveSeperator; + menuItem -parent $gMainFileMenu + -label "Auto Save options..." + -annotation "Auto Save: Configure automatic backups" + -command "ajrAutoSave" + ui_ajrAS_FileAutoSaveMenu; +} + +global proc ajrAS_GUI() { +// Call up the GUI + if (`window -exists ui_ajrAS`) + deleteUI ui_ajrAS; + + window -title "AutoSave v1.3" + -iconName "AutoSave" + -widthHeight 280 300 + -menuBar false + ui_ajrAS; + + formLayout ui_ajrAS_mainForm; + + frameLayout -borderStyle "in" + -labelVisible false + ui_ajrAS_mainFrame; + + scrollLayout -childResizable true + -verticalScrollBarThickness 10 + -horizontalScrollBarThickness 0; + + columnLayout -adjustableColumn true + -cal "left"; + + frameLayout -labelVisible false + -borderStyle "etchedIn" + -manage true; + + columnLayout -adjustableColumn true + -columnOffset "left" 30 + -columnAlign "left"; + + checkBox -label "Enable AutoSave" + -value `optionVar -query ajrAS_iEnabled` + -onCommand "ajrAS_Update" + -offCommand "ajrAS_Update; $ajrAS_iSelectCount = 0;" + -annotation "Enable: Switch the autosave feature on/off" + ui_ajrAS_iEnabled; + + setParent ..; + setParent ..; + + frameLayout -label "Options" + -borderStyle "etchedIn" + ui_ajrAS_optionsFrame; + + columnLayout -adjustableColumn true + -columnOffset "left" 30 + -columnAlign "left"; + + rowColumnLayout -numberOfColumns 3 + -columnWidth 1 70 + -columnWidth 2 40 + -columnWidth 3 100; + + text "Save after"; + intField -value `optionVar -query ajrAS_iSelectTrigger` + -width 35 + -changeCommand "ajrAS_Update" + -annotation "Save after: Good values are 200 for selects, 30 for minutes" + ui_ajrAS_iSelectTrigger; + optionMenu ui_ajrAS_type; + menuItem -label "selects"; + menuItem -label "minutes"; + optionMenu -edit + -changeCommand "ajrAS_Update" + -annotation "Save after: Will you make backups as the minutes pass, or as you pick objects" + -select (`optionVar -query ajrAS_iUseTime` + 1) + ui_ajrAS_type; + + text "Keep up to"; + intField -value `optionVar -query ajrAS_iSaveCopies` + -annotation "Keep up to: How many rolling copies do you want to keep" + -width 35 + -changeCommand "ajrAS_Update" + ui_ajrAS_iSaveCopies; + text " backups"; + + setParent ..; + + rowLayout -numberOfColumns 3 + -columnWidth3 70 100 50 + -columnAttach3 "left" "left" "left" + -columnOffset3 0 0 5 + -adjustableColumn 2; + + text -label "Save in"; + textField -fileName `optionVar -query ajrAS_sBackupDir` + -width 90 + -changeCommand "ajrAS_Update" + -annotation "Save in: Path to your backup folder (can be relative to your project)" + ui_ajrAS_sBackupDir; + symbolButton -image "navButtonBrowse.xpm" + -annotation "Save in: Browse for the backup folder" + -command "fileBrowser(\"ajrAS_SetBackupDir\",\"AutoSave\", \"folder\", 4);" + browser; + setParent ..; + + checkBox -label "notify when saving" + -annotation "Notify: Pop up an window when saving (may interfere with hardware rendering)" + -value `optionVar -query ajrAS_iNotify` + -onCommand "ajrAS_Update" + -offCommand "ajrAS_Update" + ui_ajrAS_iNotify; + + setParent ..; + + setParent ..; + + setParent ..; + setParent ..; + setParent ..; + + button -label "Close" + -command "ajrAS_Update; deleteUI ui_ajrAS" + ui_ajrAS_close; + + button -label "Reset" + -command "ajrAS_Reset" + ui_ajrAS_reset; + + formLayout -edit + -attachForm ui_ajrAS_mainFrame "left" 5 + -attachForm ui_ajrAS_mainFrame "right" 5 + -attachForm ui_ajrAS_mainFrame "top" 5 + -attachForm ui_ajrAS_mainFrame "bottom" 35 + + -attachPosition ui_ajrAS_reset "left" 2 50 + -attachForm ui_ajrAS_reset "right" 5 + -attachNone ui_ajrAS_reset "top" + -attachForm ui_ajrAS_reset "bottom" 5 + + -attachForm ui_ajrAS_close "left" 5 + -attachPosition ui_ajrAS_close "right" 2 50 + -attachNone ui_ajrAS_close "top" + -attachForm ui_ajrAS_close "bottom" 5 + + ui_ajrAS_mainForm; + + showWindow ui_ajrAS; +} + +global proc ajrAutoSave() { +// Called when Maya starts up, and when the user wants to change settings. +// If the selection script job can't be found, then assume it's startup time & just +// silently go into the preferred state; otherwise bring up the GUI + global int $ajrAS_iTimeJobNo; // The number of the time change script job + global int $ajrAS_iSelJobNo; // The number of the select change script job + global int $ajrAS_iBackupNumber; + global float $ajrAS_fLastSave; // Time of the last save, or script launch + + // If these values are not in the prefs, then set them to the defaults + if(! `optionVar -exists "ajrAS_iEnabled"`) + optionVar -intValue "ajrAS_iEnabled" off; + if(! `optionVar -exists "ajrAS_iSelectTrigger"`) + optionVar -intValue "ajrAS_iSelectTrigger" 15; + if(! `optionVar -exists "ajrAS_iUseTime"`) + optionVar -intValue "ajrAS_iUseTime" on; + if(! `optionVar -exists "ajrAS_iSaveCopies"`) + optionVar -intValue "ajrAS_iSaveCopies" 5; + if(! `optionVar -exists "ajrAS_iNotify"`) + optionVar -intValue "ajrAS_iNotify" off; + if(! `optionVar -exists "ajrAS_sBackupDir"`) + optionVar -stringValue "ajrAS_sBackupDir" "scenes"; + + if ($ajrAS_iSelJobNo != 0) + ajrAS_GUI; + else { + $ajrAS_iBackupNumber = 1; + $ajrAS_fLastSave = `timerX`; + ajrAS_FileMenu; + $ajrAS_iTimeJobNo = `scriptJob -event timeChanged ajrAS_CurrentTimeHasChanged`; + $ajrAS_iSelJobNo = `scriptJob -event SelectionChanged ajrAS_SelectionHasChanged`; + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/copyToInst.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/copyToInst.mel new file mode 100644 index 0000000..36fd6f4 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/copyToInst.mel @@ -0,0 +1,302 @@ +// copyToInst.mel +// Copy to Instance +// Alias|Wavefront Script File +// +// Creation Date: 24 Jan. 2001 +// Author: (Novy) Gurdarshan Dhillon +// +// +// +// Description: +// Copy to Instance +// Changes duplicated objects to instanced objects +// The user picks the original object and the list of duplicated +// objects. +// +// Additional Features: +// +// Additional Files needed: +// +// Input Arguments: +// None. +// Return Values: +// None. +// copyToInst +// + +global proc copyToInst() +{ + global string $copyToInst_orig; + global string $copyToInst_new; + global string $copyToInst_dup; + global string $copyToInst_origButton; + global string $copyToInst_newButton; + global string $copyToInst_dupButton; + global string $copyToInst_check; + global string $copyToInst_InstDup; + global string $copyToInst_dupName; + if (`window -exists copyToInst`) + { + deleteUI -window copyToInst; + } + window -title "Copy to Instance" -rtf true -w 590 -h 400 -sizeable true copyToInst; + scrollLayout scrollLayout; + columnLayout -rs 5; + rowColumnLayout -nc 4 -columnWidth 1 80 -columnWidth 2 200 -columnWidth 3 80 -columnWidth 4 200; + columnLayout -cw 80 -cat "left" 5; + $copyToInst_origButton = `button -label "Add Original" -w 75 -en 1 -command "CTI_addOrig"`; + $copyToInst_newButton = `button -label "Add New" -w 75 -en 0 -command "CTI_addNew"`; + text -l ""; + $copyToInst_dupName = `checkBox -label "Get Dup" -v 0`; + $copyToInst_check = `checkBox -label "Set Pivots" -v 1`; + $copyToInst_InstDup = `checkBox -label "Instance" -v 1`; + text -l "off : Duplicate"; + text -l "on : Instance"; + setParent ..; + columnLayout -cw 200 -cat "left" 0; + $copyToInst_orig = `textField -ed 0 -w 200 orig`; + $copyToInst_new = `textField -ed 0 -w 200 new`; + setParent ..; + rowLayout -w 80 -h 50 -nc 1 -cl1 "center";; + $copyToInst_dupButton = `button -label "Add Duplicates" -w 80 -en 0 -command "CTI_addDup"`; + setParent ..; + rowLayout -w 200 -h 300 -nc 1 -cl1 "center";; + $copyToInst_dup = `textScrollList -w 200 -h 300 dup`; + setParent ..; + setParent ..; + columnLayout -w 560 -h 100 -cat "left" 5; + button -label "Create" -w 550 -en 1 -command "CTI_create"; + setParent ..; + setParent ..; + setParent ..; + window -edit -w 590 -h 400 copyToInst; + showWindow; +} + +global proc CTI_addOrig() +{ + global string $copyToInst_orig; + global string $copyToInst_dup; + global string $copyToInst_origButton; + global string $copyToInst_newButton; + global string $copyToInst_dupButton; + + string $object[]; + int $numDup; + int $index; + + clear($object); + $object = `ls -sl -tr`; + textField -edit -tx $object[0] $copyToInst_orig; + button -edit -en 1 $copyToInst_newButton; + $numDup = `textScrollList -q -ni $copyToInst_dup`; + textScrollList -edit -removeAll $copyToInst_dup; +} + +global proc CTI_addNew() +{ + global string $copyToInst_new; + global string $copyToInst_dup; + global string $copyToInst_origButton; + global string $copyToInst_newButton; + global string $copyToInst_dupButton; + + string $object[]; + int $numDup; + int $index; + + clear($object); + + $object = `ls -sl -tr`; + textField -edit -tx $object[0] $copyToInst_new; + button -edit -en 1 $copyToInst_dupButton; +} + +global proc CTI_addDup() +{ + global string $copyToInst_orig; + global string $copyToInst_new; + global string $copyToInst_dup; + global string $copyToInst_dupName; + + string $object[]; + string $original; + string $new; + int $index; + textScrollList -edit -removeAll $copyToInst_dup; + clear($object); + if (`checkBox -q -v $copyToInst_dupName`) + { selectInstance `textField -q -tx $copyToInst_orig`;} + $object = `ls -sl -tr`; + $original = `textField -query -tx $copyToInst_orig`; + $new = `textField -query -tx $copyToInst_new`; + for ($index=0; $index < size($object); $index++) + { + if($object[$index]!=$original && $object[$index]!=$new) + { + textScrollList -edit -append $object[$index] $copyToInst_dup; + } + } + select -clear; +} + +global proc CTI_create() +{ + global string $copyToInst_orig; + global string $copyToInst_new; + global string $copyToInst_dup; + global string $copyToInst_check; + global string $copyToInst_InstDup; + string $objects[]; + string $inst[]; + string $inst_new[]; + string $new; + string $original; + string $attr; + string $attr2; + float $orig_pivot[]; + float $new_pivot[]; + float $orig_trans[]; + float $new_trans[]; + float $trans[]; + + float $orig_scale_pivot[]; + float $new_scale_pivot[]; + float $orig_scale[]; + float $new_scale[]; + float $scale[]; + + float $orig_rot[]; + float $orig_rotx; + float $orig_roty; + float $orig_rotz; + float $rot[]; + float $x; + float $y; + float $z; + int $index; + int $numObj; + + clear($objects); clear($trans); clear($rot); clear($inst); clear($inst_new); + clear($orig_pivot); clear($new_pivot); clear($orig_trans); clear($new_trans); + + $original = `textField -query -tx $copyToInst_orig`; + $new = `textField -query -tx $copyToInst_new`; + $objects = `textScrollList -q -allItems $copyToInst_dup`; + $numObj = size($objects); + if(`checkBox -q -v $copyToInst_check` == 1) + { + $orig_pivot = `xform -q -rp $original`; + $new_pivot = `xform -q -rp $new`; + $orig_trans = `xform -q -t $original`; + $new_trans = `xform -q -t $new`; + + $orig_scale_pivot = `xform -q -sp $original`; + $new_scale_pivot = `xform -q -sp $new`; + $orig_scale = `xform -q -s $original`; + $new_scale = `xform -q -s $new`; + + $orig_rot = `xform -q -ro $original`; + $orig_rotx = $orig_rot[0]; + $orig_roty = $orig_rot[1]; + $orig_rotz = $orig_rot[2]; +// print $orig_trans; +// print "---------\n"; +// print $new_trans; +// print "---------\n"; + } + else + { + $orig_pivot[0] = 0; $orig_pivot[1] = 0; $orig_pivot[2] = 0; + $new_pivot[0] = 0; $new_pivot[1] = 0; $new_pivot[2] = 0; + $orig_trans[0] = 0; $orig_trans[1] = 0; $orig_trans[2] = 0; + $new_trans[0] = 0; $new_trans[1] = 0; $new_trans[2] = 0; + $orig_scale_pivot[0] = 0; $orig_scale_pivot[1] = 0; $orig_scale_pivot[2] = 0; + $new_scale_pivot[0] = 0; $new_scale_pivot[1] = 0; $new_scale_pivot[2] = 0; + $orig_scale[0] = 0; $orig_scale[1] = 0; $orig_scale[2] = 0; + $new_scale[0] = 0; $new_scale[1] = 0; $new_scale[2] = 0; + $orig_rotx = 0; + $orig_roty = 0; + $orig_rotz = 0; + } + for($index=0; $index<$numObj; $index++) + { + clear($inst); + $attr = $objects[$index] + ".translate"; + $trans = `xform -ws -q -rp $objects[$index]`; + $attr = $objects[$index] + ".rotate"; + $rot = `getAttr $attr`; + $attr = $objects[$index] + ".scale"; + $scale = `getAttr $attr`; + if(`checkBox -q -v $copyToInst_InstDup`) + { $inst = `instance $new`;} + else + { $inst = `duplicate $new`;} + + $x = $trans[0] - $new_pivot[0]; + $y = $trans[1] - $new_pivot[1]; + $z = $trans[2] - $new_pivot[2]; + xform -ws -t $x $y $z $inst[0]; + + $x = $rot[0] - $orig_rotx ; + $y = $rot[1] - $orig_roty; + $z = $rot[2] - $orig_rotz; + xform -a -ro $x $y $z $inst[0]; + + $x = $scale[0]; + $y = $scale[1]; + $z = $scale[2]; + xform -ws -s $x $y $z $inst[0]; + // $inst[0] = `rename $inst[0] $objects[$index]`; + $inst_new[$index] = $inst[0]; + } + if(`checkBox -q -v $copyToInst_InstDup`==0) + { + for($obj in $inst_new) + { + string $newName = $obj + "Shape"; + string $shape[] = `pickWalk -d "down" $obj`; + rename $shape[0] $newName; + } + } + if (size($new)>0) + { + group -n "inst" $inst_new; + } +} + +global proc selectInstance(string $origObject) +{ + string $orig[]; + clear($orig); + $orig[0] = $origObject; + select -r $origObject; + string $origShape[]; + clear($origShape); + $origShape = `ls -sl -dag -lf`; + string $token[]; + clear($token); + int $numTok; + $numTok = `tokenize $origShape[0] "|" $token`; +// string $select[]; +// clear($select); + int $index; +// int $count; +// $count = 0; +// if(`strcmp $orig[0] $token[0]`!=0) +// { error "No Original Geometry Selected!!";} +// else + { + string $objects[]= `ls -tr`; + for($object in $objects) + { + string $objShape[] = `ls -dag -lf $object`; + if(`strcmp $origShape[0] $objShape[0]` == 0) + { + select -add $object; + // $select[$count] = $object; + // $count++; + } + } + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceTexture.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceTexture.mel new file mode 100644 index 0000000..74541f9 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceTexture.mel @@ -0,0 +1,44 @@ +global proc forceTexture () +{ + for ($shader in `ls -mat`) + { + if($shader == "lambert1") + { + continue; + } + if($shader == "particleCloud1") + { + continue; + } + + string $connections[] = `listConnections ($shader + ".color")`; + if(size($connections) > 0) + { + print ("Ignoring " + $shader + " since it already has a map...\n"); + continue; + } + print ("Processing " + $shader + "\n"); + float $colour[] = `getAttr ($shader + ".color")`; + int $colourR = $colour[0] * 255; + int $colourG = $colour[1] * 255; + int $colourB = $colour[2] * 255; + string $mapname = "R" + $colourR + "G" + $colourG + "B" + $colourB; + print ("Mapname " + $mapname+ "\n" ); + + shadingNode -asTexture ramp -name $mapname; + setAttr ($mapname +".colorEntryList[0].color") -type double3 $colour[0] $colour[1] $colour[2]; + setAttr ($mapname +".colorEntryList[1].color") -type double3 $colour[0] $colour[1] $colour[2]; + setAttr ($mapname +".colorEntryList[2].color") -type double3 $colour[0] $colour[1] $colour[2]; + connectAttr ($mapname + ".outColor") ($shader + ".color"); + if(`nodeType $shader` == "p3dSimpleShader") + { + setAttr ($shader +".proceduralXRes") 1; + setAttr ($shader +".proceduralYRes") 1; + }else + if(`nodeType $shader` == "lambert") + { + setAttr ($shader +".p3dProceduralTexXRes") 4; + setAttr ($shader +".p3dProceduralTexYRes") 4; + } + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceUniqueNames.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceUniqueNames.mel new file mode 100644 index 0000000..c939c2d --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/forceUniqueNames.mel @@ -0,0 +1,381 @@ +//=========================================================================== +// Copyright ©2002 Radical Entertainment Ltd. All rights reserved. +// +// Created: 26 March, 2002 +// +// Description: Forces unique names for all nodes in the scene, and ensures +// that each Shape node derives its name (and numerical suffix) +// from its Transform. +// +// Constraints: +// +// Creator: Bryan Ewert +// +//=========================================================================== + +//=========================================================================== +// version +//=========================================================================== +// Description: Returns the current version for this MEL script. +// Used for version control. +// +// Constraints: +// +//=========================================================================== +proc float version() +{ + return ( 1.1 ); // 01 May 2002 +} + +//=========================================================================== +// depth +//=========================================================================== +// Description: Determines the depth of the specified DAG; e.g. the depth +// for "|group1|transform2|transformShape2" is 3. +// +// Constraints: +// +// Parameters: string $node: The full path to the node. +// +// Return: (int): The depth of the path. +// +//=========================================================================== +proc int depth( string $node ) +{ + int $depth = 0; + + if ( `objExists $node` ) + { + string $longA[] = `ls -l $node`; + + string $tokens[]; + $depth = `tokenize $longA[0] "|" $tokens`; + } + + return $depth; +} + +//=========================================================================== +// nameNoPath +//=========================================================================== +// Description: Returns the short name for the specified node. +// "|group1|transform2|transformShape2" would return +// "transformShape2" +// +// Constraints: The pathless name may not be unique, and may not be +// sufficient for Maya to resolve the DAG! This name is +// intended for use in a rename operation, and not for +// performing edit operations on the object. +// +// Parameters: string $node: The full path to the node. +// +// Return: (string): The short path for the node. +// +//=========================================================================== +proc string nameNoPath( string $node ) +{ + return `match "[^|]*$" $node`; +} + +//=========================================================================== +// isUnique +//=========================================================================== +// Description: Determines if the specified node has a unique name. +// +// Constraints: +// +// Parameters: string $node: Name of the node (may be full path, may not). +// +// Return: (int): TRUE (non-zero) if name is unique; else FALSE (zero). +// +//=========================================================================== +proc int isUnique( string $node ) +{ + int $isUnique = true; + + string $noPath = nameNoPath( $node ); + string $wildcard = ( "*" + $noPath ); + string $potentials[] = `ls $wildcard`; + + int $numMatches = 0; + for ( $p in $potentials ) + { + string $tokens[]; + int $numTokens = `tokenize $p "|" $tokens`; + if ( $tokens[$numTokens-1] == $noPath ) + { + $numMatches++; + } + } + + $isUnique = ( $numMatches < 2 ); + + return $isUnique; +} + +//=========================================================================== +// getUniqueName +//=========================================================================== +// Description: Builds a unique name for the specified node by generating +// a numerical suffix for the node. An existing numerical +// suffix is stripped and replaced if the node's name is not +// already unique. +// +// Constraints: The returned name does _not_ contain a path and may not be +// sufficient for Maya to resolve the DAG! This name is +// intended for use in a rename operation, and not for +// performing edit operations on the object. +// +// Parameters: string $node: The full path to the node. +// +// Return: (string): A unique name for the node. +// +//=========================================================================== +proc string getUniqueName( string $node ) +{ + string $shortNode = nameNoPath( $node ); + string $unique = $shortNode; + + if ( !isUnique( $shortNode ) ) + { + // strip numeric suffix + string $suffix = `match "[0-9]*$" $shortNode`; + int $sizeShortNode = `size $shortNode`; + int $sizeSuffix = `size $suffix`; + $shortNode = `substring $shortNode 1 ( $sizeShortNode - $sizeSuffix )`; + + if ( !`objExists $shortNode` ) + { + $unique = $shortNode; + } + else + { + string $newNode; + int $u = 1; + do + { + $newNode = ( $shortNode + ($u++) ); + } while ( `objExists $newNode` ); + + $unique = $newNode; + } + } + + return $unique; +} + +//=========================================================================== +// getShape +//=========================================================================== +// Description: Returns the shape node, if any, for the specified transform. +// +// Constraints: Considers only a single shape. +// +// Parameters: string $xform: The transform node. +// +// Return: (string): The shape node. +// +//=========================================================================== +proc string getShape( string $xform ) +{ + string $shapes[]; + + $shapes[0] = $xform; + + string $isTransform[] = `ls -transforms $xform`; + + if ( `size $isTransform` > 0 ) + // If given node is not a transform, assume it is a shape + // and pass it through + { + $shapes = `listRelatives -fullPath -shapes $xform`; + } + + return $shapes[0]; +} + +//=========================================================================== +// getShapeName +//=========================================================================== +// Description: Derives a name for the shape node given the specified +// transform name. For example if the $node specified is +// "pCube23" the shape name will be "pCubeShape23". +// +// Constraints: No checking is done to verify that $node is a transform. +// +// Parameters: string $node: The name for the transform node. +// +// Return: (string): The name for the shape node. +// +//=========================================================================== +proc string getShapeName( string $node ) +{ + string $numeric = `match "[0-9]+$" $node`; + + int $strlen = `size $node`; + int $numlen = `size $numeric`; + string $alpha = `substring $node 1 ( $strlen - $numlen )`; + + string $shapeName = ( $alpha + "Shape" + $numeric ); + + return $shapeName; +} + +//=========================================================================== +// performRename +//=========================================================================== +// Description: Does the work for the rename operation -- generates unique +// names for the transform and shape nodes, assesses whether +// the names are non-unique and, if necessary, renames the +// nodes. +// +// Constraints: Read-only nodes (such as Maya's startup cameras) are a real +// pain in the keister because there is no way to detect them +// reliably ('ls -readOnly' doesn't work for this). Currently +// the workaround is to assess whether my "unique" name is +// the same as Maya's current name and, if so, don't bother +// attempting a rename operation. +// +// Parameters: string $node: The full path to the node being renamed. +// +// Return: (int): TRUE (non-zero) if successful; else FALSE. +// TRUE doesn't necessary mean it was renamed; it may +// also mean it did not need to be renamed. +// +//=========================================================================== +proc int performRename( string $node ) +{ + int $bSuccess = false; + + if ( `objExists $node` ) + { + string $unique = getUniqueName( $node ); + string $shape = getShape( $node ); + + if ( $shape != "" ) + { + string $uniqueShape = getShapeName( $unique ); + if ( $uniqueShape != nameNoPath( $shape ) ) + { + eval( "rename " + $shape + " " + $uniqueShape ); + } + } + + if ( $unique != nameNoPath( $node ) ) + { + eval( "rename " + $node + " " + $unique ); + } + + $bSuccess = true; + } + + return $bSuccess; +} + +//=========================================================================== +// performUniqueNames +//=========================================================================== +// Description: Recursive procedure for assessing the scene and looping +// through the transform nodes. The renaming is performed +// from the top-down, and if a top-level node is renamed the +// path to its children will no longer be valid. The cheap +// way around this is to detect an invalid path and signal +// a recursive call to this function. The number of retries +// is capped to prevent any possibility of infinite recursion. +// +// Constraints: +// +// Parameters: int $progress: The current progress; i.e. the number of +// nodes successfully processed so far. +// int $retry: Number of retries (recursions) remaining. +// +// Return: (none) +// +//=========================================================================== +proc performUniqueNames( int $progress, int $retry ) +{ + $retry = max( $retry, 0 ); + + int $bSuccess = true; + + string $transforms[] = `ls -long -transforms`; + int $depth[]; + int $maxDepth = 0; + + for ( $t = 0; $t < `size $transforms`; $t++ ) + { + $depth[$t] = depth( $transforms[$t] ); + $maxDepth = max( $maxDepth, $depth[$t] ); + } + + for ( $d = 1; $d <= $maxDepth; $d++ ) + { + for ( $t = 0; $t < `size $transforms`; $t++ ) + { + if ( $depth[$t] == $d ) + { + $bSuccess = performRename( $transforms[$t] ) && $bSuccess; + + if ( $bSuccess ) $progress++; + } + + progressWindow -e -progress $progress; + } + } + + if ( !$bSuccess && $retry ) performUniqueNames( $progress, --$retry ); +} + +//=========================================================================== +// forceUniqueNames +//=========================================================================== +// Description: Entry point for this script. +// +// Forces unique names for all nodes in the scene, and ensures +// that each Shape node derives its name (and numerical suffix) +// from its Transform. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc forceUniqueNames() +{ + int $numRetries = 8; + + waitCursor -state on; + + string $transforms[] = `ls -l -type "transform"`; + + int $allProgress = ( `size $transforms` ); + int $progress = 0; + int $progressThreshold = 256; // no progress window for fewer items. + + if ( $allProgress > $progressThreshold ) + { + progressWindow + -ii false // not interruptable, sorry. + -min 0 + -max $allProgress + -title "Force Unique Names" + -status "Scanning for non-unique names." + ; + } + + performUniqueNames( $progress, $numRetries ); + + if ( $allProgress > $progressThreshold ) + { + progressWindow -endProgress; + } + + waitCursor -state off; +} + + +/* +source forceUniqueNames; forceUniqueNames; +*/ diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/backfaceoff.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/backfaceoff.bmp Binary files differnew file mode 100644 index 0000000..cdcf12f --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/backfaceoff.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/movetex.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/movetex.bmp Binary files differnew file mode 100644 index 0000000..30ae56d --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/movetex.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/optimizetex.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/optimizetex.bmp Binary files differnew file mode 100644 index 0000000..af78381 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/optimizetex.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/p3d.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/p3d.bmp Binary files differnew file mode 100644 index 0000000..8e4871e --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/p3d.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelighttool.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelighttool.bmp Binary files differnew file mode 100644 index 0000000..4025c62 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelighttool.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelitoff.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelitoff.bmp Binary files differnew file mode 100644 index 0000000..8b08d44 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/prelitoff.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/removetxt.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/removetxt.bmp Binary files differnew file mode 100644 index 0000000..0cc5661 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/removetxt.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renamesh.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renamesh.bmp Binary files differnew file mode 100644 index 0000000..f0160a3 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renamesh.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renametex.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renametex.bmp Binary files differnew file mode 100644 index 0000000..b00e2b5 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/renametex.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/rnd.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/rnd.bmp Binary files differnew file mode 100644 index 0000000..6ce51cc --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/rnd.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/setshape.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/setshape.bmp Binary files differnew file mode 100644 index 0000000..7571fdb --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/setshape.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/unique.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/unique.bmp Binary files differnew file mode 100644 index 0000000..d04b12b --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/unique.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/uvz.bmp b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/uvz.bmp Binary files differnew file mode 100644 index 0000000..a992bce --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/icons/uvz.bmp diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelight.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelight.mel new file mode 100644 index 0000000..6da9772 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelight.mel @@ -0,0 +1,126 @@ +/*=========================================================================== + File: mappedPrelight.mel + Created: January 28, 2002 + Author: Harold Westlund + + Copyright (c) 2002 Radical Entertainment, Inc. + All rights reserved. + +============================================================================= + + This procedure remaps vertex colour of a mesh. Colours within a + specified luminance range (low to high) are mapped to the corresponding + RGB color. Low-high-RGB sets are passed to this procedure as parater + arrays. + + return value: + bool = success of this procedure. + +===========================================================================*/ + +global proc int mappedPrelight ( + float $map_low[], + float $map_high[], + float $map_red[], + float $map_green[], + float $map_blue[] ) +{ + print "Remapping vertex colours.\n"; + + int $NUM_MAPS = size( $map_low ); + if( size( $map_high ) != $NUM_MAPS || + size( $map_red ) != $NUM_MAPS || + size( $map_green ) != $NUM_MAPS || + size( $map_blue ) != $NUM_MAPS ) + { + return false; + } + + string $selection[] = `ls -selection`; + + string $mesh[] = `filterExpand -sm 12 -ex true`; + + // Step through all selected meshes + for( $i = 0; $i < size($mesh); $i++ ) + { + int $verticesA[] = `polyEvaluate -v ( $mesh[$i] )`; + int $numVerts = $verticesA[0]; + clear $verticesA; + + int $vfIdx = 0; + int $viList[]; + int $fiList[]; + float $redList[]; + float $greenList[]; + float $blueList[]; + + // Step through the vertices in the mesh + for( $j = 0; $j < $numVerts; $j++ ) + { + // Find the faces which use the current vertex. + string $command = " " + $mesh[$i] + ".vtx["+$j+"]"; + string $s[] = `polyInfo -vf $command`; + string $t[]; + int $tokCount = `tokenize $s[0] $t`; + clear $s; + + // Step through the vertexFaces for this vertex + for( $k = 2; $k < $tokCount; $k++ ) + { + string $vf = " " + $mesh[$i] + ".vtxFace["+$j+"]["+$t[$k]+"]"; + float $rgb[] = `polyColorPerVertex -q -r -g -b $vf`; + float $red = $rgb[0]; + float $green = $rgb[1]; + float $blue = $rgb[2]; + clear $rgb; + + // Find the lumninance + float $y = .299 * $red + .587 * $green + .114 * $blue; + + // Apply the appropriate color maps. + int $mIdx; + for ( $mIdx = 0; $mIdx < $NUM_MAPS; $mIdx++ ) + { + if ( ($y <= ( $map_high[$mIdx] ) ) && + ($y >= ( $map_low[$mIdx] ) ) ) + { + // Luminance is within specified range + $red = $map_red[$mIdx]; + $green = $map_green[$mIdx]; + $blue = $map_blue[$mIdx]; + + // Write color back to vertexFace +// polyColorPerVertex -e -rgb $red $green $blue $vf; + break; + } + } + $viList[$vfIdx] = $j; + $fiList[$vfIdx] = $t[$k]; + $redList[$vfIdx] = $red; + $greenList[$vfIdx] = $green; + $blueList[$vfIdx] = $blue; + + $vfIdx++; + + } + clear $t; + + } + // Use the collected information to colour the mesh. + polyColorPerVertexArray( $viList, $fiList, $redList, + $greenList, $blueList, $mesh[$i] ); + clear $viList; + clear $fiList; + clear $redList; + clear $greenList; + clear $blueList; + } + clear $mesh; + + select $selection; + + print "Finished remapping.\n"; + + return true; +} + diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelightWindow.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelightWindow.mel new file mode 100644 index 0000000..c3b39cb --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/mappedPrelightWindow.mel @@ -0,0 +1,1118 @@ +/*=========================================================================== + File: mappedPrelightWindow.mel + Created: January 28, 2002 + Author: Harold Westlund + + Copyright (c) 2002 Radical Entertainment, Inc. + All rights reserved. + + Updated: April 12, 2002 + Version: 1.2.0 + +============================================================================= + + mappedPrelightWindow is the user interface for mappedPrelight. + + This program provides a means to map from a specified cbv brightness + range to another colour. Up to six maps may be specifed and used in + any combination. + +===========================================================================*/ + +// Gather global data from other functions and apply to the window. +global proc P3Dmp_updateAllMappedPrelightGlobal( int $mpNumMaps ) +{ + // Prepare for forced min value if checked. + P3Dmp_forceValues ( $mpNumMaps ); +} + + +// Add Context Sensitive Help +global proc P3Dmp_buildMappedPrelightContextHelpItems(string $nameRoot, string $menuParent) +{ + menuItem -label "Help on Mapped Prelight..." + -enableCommandRepeat false + -command "showHelp -d \"UserGuide/ModelingPoly/PolyColoring3.html\""; +} + +// Prelight the selected object using default options. +global proc P3Dmp_performPrelight () +{ + toggleMaterialMapping(0); + polyGeoSampler + -sf 0 + -su + -colorBlend overwrite + -alphaBlend overwrite; + toggleMaterialMapping(1); +} + +// Prelight conditional upon prelight checkbox being checked +// Either way, set the persistent data. +global proc P3Dmp_conditionalPerformPrelight () +{ + int $usePrelight; + $usePrelight = `checkBox -q -v performPrelightCheckBox`; + optionVar -intValue P3D_mpPerformPrelight $usePrelight; + + if ($usePrelight) + { + print "Performing prelight\n"; + + P3Dmp_performPrelight(); + } +} + +//================================================================== +// +// Modify the UI through interaction +// +//================================================================== + +// Force the minimum value of one map to be the maximum value +// of the previous map. +global proc P3Dmp_forceValues ( int $mapID ) +{ + int $forceMinValue; + $forceMinValue = `checkBox -q -v forceMinValueCheckBox`; + + int $lastMapUsed = 0; + + // Check every map's UI settings + int $i; + for( $i = 1; $i <= $mapID; $i++ ) + { + if( $forceMinValue == true ) + { + int $mapUse; + $mapUse = `checkBox -q -v ( "mpMap" + $i + "CheckBox" )`; + if($mapUse) + { + // Nothing is done to the first map in use. + // Other maps have the min set to the max of the + // last in use map, and then the min is disabled. + if( $lastMapUsed != 0 ) + { + float $mapMin = `floatField -q -v ("mpMap" + $lastMapUsed + "MaxField")`; + floatField -edit -v $mapMin ("mpMap" + $i + "MinField"); + floatField -edit -enable 0 ("mpMap" + $i + "MinField"); + } + else + { + floatField -edit -enable 1 ("mpMap" + $i + "MinField"); + } + + $lastMapUsed = $i; + } + + } + else + { + int $mapUse; + $mapUse = `checkBox -q -v ( "mpMap" + $i + "CheckBox" )`; + if($mapUse) + { + + floatField -edit -enable 1 ("mpMap" + $i + "MinField"); + } + + } + } +} + +// Turn a particular map on or off. +global proc P3Dmp_changeMapUse ( int $mapID ) +{ + string $mapName = ( "mpMap" + $mapID ); + + string $checkBox = ( $mapName + "CheckBox" ); + + string $layout = ( $mapName + "DetailsLayout" ); + + int $isOn = `checkBox -q -v $checkBox`; + + // Now enable or disable the map. + columnLayout -edit + -enable $isOn + $layout; + + // Changing the map use will affect forced minimums. + P3Dmp_forceValues ( $mapID ); +} + +// Apply the numeric RGB values to the colour slider. +global proc P3Dmp_changeMapRGB ( int $mapID, string $srcDst) +{ + string $mapName = ( "mpMap" + $mapID + $srcDst ); + + string $RedField = ( $mapName + "RedField" ); + string $GreenField = ( $mapName + "GreenField" ); + string $BlueField = ( $mapName + "BlueField" ); + + float $red, $green, $blue; + $red = `floatField -q -v $RedField`; + $green = `floatField -q -v $GreenField`; + $blue = `floatField -q -v $BlueField`; + + colorSliderButtonGrp -edit + -rgbValue $red $green $blue + ( $mapName + "ColorSlider" ); +} + +// Apply the colour slider values to the numeric RGB values. +global proc P3Dmp_changeMapRGBSlider ( int $mapID, string $srcDst ) +{ + string $mapName = ( "mpMap" + $mapID + $srcDst ); + + float $rgb[3]; + + $rgb = `colorSliderButtonGrp -q -rgbValue ( $mapName + "ColorSlider" )`; + + string $RedField = ( $mapName + "RedField" ); + string $GreenField = ( $mapName + "GreenField" ); + string $BlueField = ( $mapName + "BlueField" ); + + $red = `floatField -edit -v ( $rgb[0] ) $RedField`; + $green = `floatField -edit -v ( $rgb[1] ) $GreenField`; + $blue = `floatField -edit -v ( $rgb[2] ) $BlueField`; + + clear $rgb; +} + +// Apply the prelight maps in the range specified to the selected objects. +global proc P3Dmp_applyPrelightMaps( int $minMapNum, int $maxMapNum ) +{ + int $i; + int $numMapsInUse; + float $mapsMin[], $mapsMax[]; + float $mapsRed[], $mapsGreen[], $mapsBlue[]; + float $mapMin, $mapMax; + float $mapRed, $mapGreen, $mapBlue; + + waitCursor -state on; + + for( $i = $minMapNum; $i <= $maxMapNum; $i++ ) + { + string $mapName = ( "mpMap" + $i ); + int $mapUse; + + string $checkBox = ( $mapName + "CheckBox" ); + string $MinField = ( $mapName + "MinField" ); + string $MaxField = ( $mapName + "MaxField" ); + string $RedField = ( $mapName + "SrcRedField" ); + string $GreenField = ( $mapName + "SrcGreenField" ); + string $BlueField = ( $mapName + "SrcBlueField" ); + + $mapUse = `checkBox -q -v $checkBox`; + $mapMin = `floatField -q -v $MinField`; + $mapMax = `floatField -q -v $MaxField`; + $mapRed = `floatField -q -v $RedField`; + $mapGreen = `floatField -q -v $GreenField`; + $mapBlue = `floatField -q -v $BlueField`; + + if ($mapUse) + { + $mapsMin[$numMapsInUse] = $mapMin; + $mapsMax[$numMapsInUse] = $mapMax; + $mapsRed[$numMapsInUse] = $mapRed; + $mapsGreen[$numMapsInUse] = $mapGreen; + $mapsBlue[$numMapsInUse] = $mapBlue; + + $numMapsInUse++; + } + + string $varName = ( "P3D_" + $mapName ); + optionVar -intValue ( $varName + "Use" ) $mapUse; + optionVar -floatValue ( $varName + "Min" ) $mapMin; + optionVar -floatValue ( $varName + "Max" ) $mapMax; + optionVar -floatValue ( $varName + "SrcRed" ) $mapRed; + optionVar -floatValue ( $varName + "SrcGreen" ) $mapGreen; + optionVar -floatValue ( $varName + "SrcBlue" ) $mapBlue; + + } + + // Perform prelighting if selected + P3Dmp_conditionalPerformPrelight(); + + // Store current UI settings + int $forceMinValue, $useAveSides; + $forceMinValue = `checkBox -q -v forceMinValueCheckBox`; + $useAveSides = `checkBox -q -v useAverageSideCheckBox`; + optionVar -intValue P3D_mpforceMinValue $forceMinValue; + optionVar -intValue P3D_mpUseAveSides $useAveSides; + + if( $useAveSides ) + { + mappedAvePrelight $mapsMin $mapsMax $mapsRed $mapsGreen $mapsBlue; + } + else { + mappedPrelight $mapsMin $mapsMax $mapsRed $mapsGreen $mapsBlue; + } + + clear $mapsMin; + clear $mapsMax; + clear $mapsRed; + clear $mapsGreen; + clear $mapsBlue; + + waitCursor -state off; +} + +// Apply the colour maps in the range specified to the selected objects. +global proc P3Dmp_applyColourMaps( int $minMapNum, int $maxMapNum, int $forward ) +{ + int $i; + int $numMapsInUse; + float $mapsTolerance[]; + float $mapsSrcRed[], $mapsSrcGreen[], $mapsSrcBlue[]; + float $mapsDstRed[], $mapsDstGreen[], $mapsDstBlue[]; + float $mapTolerance; + float $mapSrcRed, $mapSrcGreen, $mapSrcBlue; + float $mapDstRed, $mapDstGreen, $mapDstBlue; + + waitCursor -state on; + + for( $i = $minMapNum; $i <= $maxMapNum; $i++ ) + { + string $mapName = ( "mpMap" + $i ); + int $mapUse; + + string $checkBox = ( $mapName + "CheckBox" ); + string $SrcRedField = ( $mapName + "SrcRedField" ); + string $SrcGreenField = ( $mapName + "SrcGreenField" ); + string $SrcBlueField = ( $mapName + "SrcBlueField" ); + string $ToleranceField = ( $mapName + "ToleranceField" ); + string $DstRedField = ( $mapName + "DstRedField" ); + string $DstGreenField = ( $mapName + "DstGreenField" ); + string $DstBlueField = ( $mapName + "DstBlueField" ); + + $mapUse = `checkBox -q -v $checkBox`; + $mapSrcRed = `floatField -q -v $SrcRedField`; + $mapSrcGreen = `floatField -q -v $SrcGreenField`; + $mapSrcBlue = `floatField -q -v $SrcBlueField`; + $mapTolerance = `floatField -q -v $ToleranceField`; + $mapDstRed = `floatField -q -v $DstRedField`; + $mapDstGreen = `floatField -q -v $DstGreenField`; + $mapDstBlue = `floatField -q -v $DstBlueField`; + + if ($mapUse) + { + $mapsSrcRed[$numMapsInUse] = $mapSrcRed; + $mapsSrcGreen[$numMapsInUse] = $mapSrcGreen; + $mapsSrcBlue[$numMapsInUse] = $mapSrcBlue; + $mapsTolerance[$numMapsInUse] = $mapTolerance; + $mapsDstRed[$numMapsInUse] = $mapDstRed; + $mapsDstGreen[$numMapsInUse] = $mapDstGreen; + $mapsDstBlue[$numMapsInUse] = $mapDstBlue; + + $numMapsInUse++; + } + + string $varName = ( "P3D_" + $mapName ); + optionVar -intValue ( $varName + "Use" ) $mapUse; + optionVar -floatValue ( $varName + "SrcRed" ) $mapSrcRed; + optionVar -floatValue ( $varName + "SrcGreen" ) $mapSrcGreen; + optionVar -floatValue ( $varName + "SrcBlue" ) $mapSrcBlue; + optionVar -floatValue ( $varName + "Tolerance" ) $mapTolerance; + optionVar -floatValue ( $varName + "DstRed" ) $mapDstRed; + optionVar -floatValue ( $varName + "DstGreen" ) $mapDstGreen; + optionVar -floatValue ( $varName + "DstBlue" ) $mapDstBlue; + + } + + // Do the action + if( $forward == 1 ) + { + mappedColour $mapsSrcRed $mapsSrcGreen $mapsSrcBlue $mapsDstRed $mapsDstGreen $mapsDstBlue $mapsTolerance; + } + else + { + mappedColour $mapsDstRed $mapsDstGreen $mapsDstBlue $mapsSrcRed $mapsSrcGreen $mapsSrcBlue $mapsTolerance; + } + + clear $mapsSrcRed; + clear $mapsSrcGreen; + clear $mapsSrcBlue; + clear $mapsTolerance; + clear $mapsDstRed; + clear $mapsDstGreen; + clear $mapsDstBlue; + + waitCursor -state off; +} + +// Deselect all maps and set their colour values to zero. +global proc P3Dmp_resetAllValues ( int $mpNumMaps ) +{ + string $cancel = `confirmDialog -message "Reset map values to zero. Are you sure?" + -button "Yes" -button "No" + -defaultButton "No" -cancelButton "No" -dismissString "No"`; + + if ($cancel == "No") + return; + + int $i; + + for( $i = 1; $i <= $mpNumMaps; $i++ ) + { + string $mapName = ( "mpMap" + $i ); + int $mapUse; + + string $checkBox = ( $mapName + "CheckBox" ); + string $MinField = ( $mapName + "MinField" ); + string $MaxField = ( $mapName + "MaxField" ); + string $SrcRedField = ( $mapName + "SrcRedField" ); + string $SrcGreenField = ( $mapName + "SrcGreenField" ); + string $SrcBlueField = ( $mapName + "SrcBlueField" ); + string $ToleranceField = ( $mapName + "ToleranceField" ); + string $DstRedField = ( $mapName + "DstRedField" ); + string $DstGreenField = ( $mapName + "DstGreenField" ); + string $DstBlueField = ( $mapName + "DstBlueField" ); + + checkBox -edit -v 0 $checkBox; + floatField -edit -v 0 $MinField; + floatField -edit -v 0 $MaxField; + floatField -edit -v 0 $SrcRedField; + floatField -edit -v 0 $SrcGreenField; + floatField -edit -v 0 $SrcBlueField; + floatField -edit -v 0.01 $ToleranceField; + floatField -edit -v 0 $DstRedField; + floatField -edit -v 0 $DstGreenField; + floatField -edit -v 0 $DstBlueField; + + P3Dmp_changeMapUse ( $i ); + P3Dmp_changeMapRGB ( $i, "Src" ); + P3Dmp_changeMapRGB ( $i, "Dst" ); + + string $varName = ( "P3D_" + $mapName ); + optionVar -intValue ( $varName + "Use" ) 0; + optionVar -floatValue ( $varName + "Min" ) 0; + optionVar -floatValue ( $varName + "Max" ) 0; + optionVar -floatValue ( $varName + "SrcRed" ) 0; + optionVar -floatValue ( $varName + "SrcGreen" ) 0; + optionVar -floatValue ( $varName + "SrcBlue" ) 0; + optionVar -floatValue ( $varName + "Tolerance" ) 0.01; + optionVar -floatValue ( $varName + "DstRed" ) 0; + optionVar -floatValue ( $varName + "DstGreen" ) 0; + optionVar -floatValue ( $varName + "DstBlue" ) 0; + } +} + +//================================================================== +// +// File IO +// +//================================================================== + +// Read in a colour map from file. +global proc P3Dmp_openColourMap ( int $mpNumMaps, string $srcDst, string $fileName, string $fileType ) +{ + if( $fileName == "" ) + { + print ("Open cancelled.\n"); + return; // Dialogue cancelled + } + print ("Retrieving map.\n"); + + int $i; + + int $n_lines; + string $lines[]; + int $fileId = `fopen $fileName "r"`; + + if ( $fileId != 0 ) + { + // Store each valid data line of the file in array. + string $nextLine = `fgetline $fileId`; + while( size( $nextLine ) > 0 ) + { + // Discard comments and blank lines + string $ch = `substring $nextLine 1 1`; + if( $ch != "#" && $ch != "\n" ) + { + $lines[$n_lines] = $nextLine; + $n_lines++; + } + + // Get the next line + $nextLine = `fgetline $fileId`; + } + fclose($fileId); + } + else + { + print ("Unable to read from " + $fileName + "\n"); + return; + } + + int $maxMapNumber = $lines[0]; + + // Ensure that the correct number of valid lines were read. + if( ( $maxMapNumber * 3 ) != ( $n_lines - 1 ) ) + { + warning -sl true ( "Invalid data in file: " + $fileName ); + warning "Map not loaded"; + + return; + } + + int $mapUse[]; + float $mapMin[], $mapMax[], $mapTolerance[]; + float $mapRed[], $mapGreen[], $mapBlue[]; + int $lineNumber = 1; + int $readError = false; + + // Read in the data for each map. + // Perform simple check for data format error. + for( $i = 1; $i <= $maxMapNumber; $i++ ) + { + $mapUse[$i] = $lines[$lineNumber++]; + + string $minmax[]; + tokenize $lines[$lineNumber++] $minmax; + if( size($minmax) != 2 && size($minmax) != 3 ) + { + $readError = true; + break; + } + + $mapMin[$i] = $minmax[0]; + $mapMax[$i] = $minmax[1]; + if( size($minmax) == 2 ) + { + $mapTolerance[$i] = 0.01; + } + else + { + $mapTolerance[$i] = $minmax[2]; + } + + clear $minmax; + + string $rgb[]; + tokenize $lines[$lineNumber++] $rgb; + if( size($rgb) != 3 ) + { + $readError = true; + break; + } + $mapRed[$i] = $rgb[0]; + $mapGreen[$i] = $rgb[1]; + $mapBlue[$i] = $rgb[2]; + clear $rgb; + } + if( $readError ) + { + warning -sl true ( "Invalid data in file: " + $fileName ); + warning "Map not loaded"; + + return; + } + + clear $lines; + + // Now update the UI and Maya's persistent data. + for( $i = 1; $i <= $maxMapNumber; $i++ ) + { + string $mapName = ( "mpMap" + $i ); + string $mapName2 = ( $mapName + $srcDst ); + string $varName = ( "P3D_" + $mapName ); + string $varName2 = ( $varName + $srcDst ); + + if( $srcDst == "Src" ) + { + optionVar -intValue ( $varName + "Use" ) $mapUse[$i]; + optionVar -floatValue ( $varName + "Min" ) $mapMin[$i]; + optionVar -floatValue ( $varName + "Max" ) $mapMax[$i]; + optionVar -floatValue ( $varName + "Tolerance" ) $mapTolerance[$i]; + } + optionVar -floatValue ( $varName2 + "Red" ) $mapRed[$i]; + optionVar -floatValue ( $varName2 + "Green" ) $mapGreen[$i]; + optionVar -floatValue ( $varName2 + "Blue" ) $mapBlue[$i]; + + if( $srcDst == "Src" ) + { + checkBox -edit -v ( $mapUse[$i] ) ( $mapName + "CheckBox" ); + floatField -edit -v ( $mapMin[$i] ) ( $mapName + "MinField" ); + floatField -edit -v ( $mapMax[$i] ) ( $mapName + "MaxField" ); + floatField -edit -v ( $mapTolerance[$i] ) ( $mapName + "ToleranceField" ); + } + floatField -edit -v ( $mapRed[$i] ) ( $mapName2 + "RedField" ); + floatField -edit -v ( $mapGreen[$i] ) ( $mapName2 + "GreenField" ); + floatField -edit -v ( $mapBlue[$i] ) ( $mapName2 + "BlueField" ); + P3Dmp_changeMapUse ( $i ); + P3Dmp_changeMapRGB ( $i, $srcDst ); + } + + clear $mapUse; + clear $mapMin; + clear $mapMax; + clear $mapTolerance; + clear $mapRed; + clear $mapGreen; + clear $mapBlue; + + print ("Open complete.\n"); +} + +// Write out a colour map to file. +global proc P3Dmp_saveColourMap ( int $mpNumMaps, string $srcDst, string $fileName, string $fileType ) +{ + if( $fileName == "" ) + { + print ("Save cancelled.\n"); + return; // Dialogue cancelled + } + print ("Saving map.\n"); + + int $i; + + int $fileId = `fopen $fileName "w"`; + + if ( $fileId != 0 ) + { + // Save out the descriptive information + string $username = strip( `system "echo %USERNAME%"` ); + string $date = strip( `system "date /t"` ); + string $time = strip( `system "time /t"` ); + fprint $fileId ( "## Generated by " + $username + "\r\n" ); + fprint $fileId ( "## on " + $date + "\r\n" ); + fprint $fileId ( "## at " + $time + "\r\n" ); + fprint $fileId ( "##\r\n" ); + fprint $fileId ( "## This file contains the map specifications for the\r\n" ); + fprint $fileId ( "## Maya mappedPrelightWindow mel script.\r\n" ); + fprint $fileId ( "##\r\n" ); + + // Save the number of maps. + fprint $fileId ( "# Number of maps\r\n" ); + fprint $fileId ( "" + $mpNumMaps + "\r\n" ); + + for( $i = 1; $i <= $mpNumMaps; $i++ ) + { + string $mapName = ( "mpMap" + $i ); + string $mapName2 = ( $mapName + $srcDst ); + + int $mapUse; + float $mapMin, $mapMax, $tolerance; + float $mapRed, $mapGreen, $mapBlue; + + $mapUse = `checkBox -q -v ( $mapName + "CheckBox" )`; + $mapMin = `floatField -q -v ( $mapName + "MinField" )`; + $mapMax = `floatField -q -v ( $mapName + "MaxField" )`; + $mapTolerance = `floatField -q -v ( $mapName + "ToleranceField" )`; + $mapRed = `floatField -q -v ( $mapName2 + "RedField" )`; + $mapGreen = `floatField -q -v ( $mapName2 + "GreenField" )`; + $mapBlue = `floatField -q -v ( $mapName2 + "BlueField" )`; + + // Write out the information for this map. + fprint $fileId ( "\r\n" ); + fprint $fileId ( "## Map " + $i + "\r\n" ); + fprint $fileId ( "# UseMap\r\n" ); + fprint $fileId ( "" + $mapUse + "\r\n" ); + fprint $fileId ( "# Min Max Tolerance\r\n" ); + fprint $fileId ( "" + $mapMin + " " + $mapMax + + " " + $mapTolerance + "\r\n" ); + fprint $fileId ( "# Red Green Blue\r\n" ); + fprint $fileId ( "" + $mapRed + " " + $mapGreen + + " " + $mapBlue + "\r\n" ); + + // Save the to Maya's persistent data + string $varName = ( "P3D_" + $mapName ); + string $varName2 = ( "P3D_" + $mapName2 ); + + // Save the data to persistent variables + optionVar -intValue ( $varName + "Use" ) $mapUse; + optionVar -floatValue ( $varName + "Min" ) $mapMin; + optionVar -floatValue ( $varName + "Max" ) $mapMax; + optionVar -floatValue ( $varName + "Tolerance" ) $mapTolerance; + optionVar -floatValue ( $varName2 + "Red" ) $mapRed; + optionVar -floatValue ( $varName2 + "Green" ) $mapGreen; + optionVar -floatValue ( $varName2 + "Blue" ) $mapBlue; + } + fclose($fileId); + } + else + { + print ("Unable to write to " + $fileName + "\n"); + return; + } + + print ("Save complete.\n"); +} + +//================================================================== +// +// Starting the UI creation section +// +//================================================================== + +proc createSamplingOptions ( string $parent ) +{ + setUITemplate -pushTemplate attributeEditorTemplate; + setParent $parent; + + // Place sampling options here. + + setParent ..; + setUITemplate -popTemplate; +} + +proc createBasicPrelight () +{ + setUITemplate -pushTemplate attributeEditorTemplate; + + columnLayout + -adjustableColumn true + mpCreateBasicPrelightLayout; + { + columnLayout -rs 5-cat "left" 150; + { + int $performPrelight; + if ( `optionVar -exists P3D_mpPerformPrelight` ) + $performPrelight = `optionVar -q P3D_mpPerformPrelight `; + checkBox + -value $performPrelight + -al left + -w 200 + -label "Prelight on each Apply" + performPrelightCheckBox; + button + -label " Prelight " + -height 22 + -command P3Dmp_performPrelight + mpPrelightButton; + } setParent ..; + } setParent ..; + + setUITemplate -popTemplate; +} + +// Create the UI for one map. +proc createMapLayout ( int $mapID, int $mpNumMaps ) +{ + setUITemplate -pushTemplate attributeEditorTemplate; + + string $mapName = ( "mpMap" + $mapID ); + float $rgbWidth = 45; + float $toleranceWidth = 30; + float $buttonWidth = 20; + + rowColumnLayout -numberOfColumns 2 + -rat 1 "top" 5 + -co 1 "left" 5 + -columnWidth 1 65 + -cal 2 "left" + -columnWidth 2 500 + ( $mapName + "Layout" ); + + { + string $checkCallback = ( "P3Dmp_changeMapUse (" + $mapID + ");" + + "P3Dmp_forceValues (" + $mpNumMaps + ")" ); + + int $mapUse=0; + float $mapMin=0, $mapMax=0; + float $mapSrcRed=0, $mapSrcGreen=0, $mapSrcBlue=0; + float $mapTolerance=0.01; + float $mapDstRed=0, $mapDstGreen=0, $mapDstBlue=0; + + string $varName = ( "P3D_" + $mapName ); + if ( `optionVar -exists ( $varName + "Use" ) ` ) + $mapUse = `optionVar -q ( $varName + "Use" ) `; + if ( `optionVar -exists ( $varName + "Min" ) ` ) + $mapMin = `optionVar -q ( $varName + "Min" ) `; + if ( `optionVar -exists ( $varName + "Max" ) ` ) + $mapMax = `optionVar -q ( $varName + "Max" ) `; + if ( `optionVar -exists ( $varName + "SrcRed" ) ` ) + $mapSrcRed = `optionVar -q ( $varName + "SrcRed" ) `; + if ( `optionVar -exists ( $varName + "SrcGreen" ) ` ) + $mapSrcGreen = `optionVar -q ( $varName + "SrcGreen" ) `; + if ( `optionVar -exists ( $varName + "SrcBlue" ) ` ) + $mapSrcBlue = `optionVar -q ( $varName + "SrcBlue" ) `; + if ( `optionVar -exists ( $varName + "Tolerance" ) ` ) + $mapTolerance = `optionVar -q ( $varName + "Tolerance" ) `; + if ( `optionVar -exists ( $varName + "DstRed" ) ` ) + $mapDstRed = `optionVar -q ( $varName + "DstRed" ) `; + if ( `optionVar -exists ( $varName + "DstGreen" ) ` ) + $mapDstGreen = `optionVar -q ( $varName + "DstGreen" ) `; + if ( `optionVar -exists ( $varName + "DstBlue" ) ` ) + $mapDstBlue = `optionVar -q ( $varName + "DstBlue" ) `; + + checkBox + -v $mapUse + -label ( "Map " + $mapID + ":" ) + -cc ( $checkCallback ) + ( $mapName + "CheckBox" ); + + columnLayout + -adjustableColumn true + -rs 3 + ( $mapName + "DetailsLayout" ); + { + rowColumnLayout -numberOfColumns 10 + -columnOffset 1 "left" 10 + -columnWidth 1 ( $rgbWidth + 10 ) + -columnWidth 2 $rgbWidth + -columnOffset 3 "left" 5 + -columnWidth 3 ( $buttonWidth + 10 ) + -columnOffset 3 "right" 5 + -columnWidth 4 $rgbWidth + -columnWidth 5 $rgbWidth + -columnWidth 6 $rgbWidth + -columnWidth 7 ( $buttonWidth + $toleranceWidth + $buttonWidth + 10 ) + -columnWidth 8 $rgbWidth + -columnWidth 9 $rgbWidth + -columnWidth 10 ( $rgbWidth + 10 ) + -columnOffset 10 "right" 10 + ( $mapName + "SelectSubLayout" ); + { + text -al "center" "Min (0-1)"; + text -al "center" "Max (0-1)"; + text -al "center" " "; + text -l "Red" -al "center" "SrcRed"; + text -l "Green" -al "center" "SrcGreen"; + text -l "Blue" -al "center" "SrcBlue"; + text -al "center" "Tolerance"; + text -l "Red" -al "center" "DstRed"; + text -l "Green" -al "center" "DstGreen"; + text -l "Blue" -al "center" "DstBlue"; + + string $minMaxCallback = ( "P3Dmp_forceValues (" + $mpNumMaps + ")" ); + string $srcRGBCallback = ( "P3Dmp_changeMapRGB ( " + $mapID + ", \"Src\"" + " )" ); + string $dstRGBCallback = ( "P3Dmp_changeMapRGB ( " + $mapID + ", \"Dst\"" + " )" ); + string $buttonCallback = ( "P3Dmp_applyPrelightMaps ( " + $mapID + ", " + $mapID + ")" ); + string $forwardCallback = ( "P3Dmp_applyColourMaps ( " + $mapID + ", " + $mapID + ", 1 )" ); + string $backwardCallback = ( "P3Dmp_applyColourMaps ( " + $mapID + ", " + $mapID + ", 0 )" ); + + floatField -value $mapMin + -cc $minMaxCallback + ( $mapName + "MinField" ); + floatField -value $mapMax + -cc $minMaxCallback + ( $mapName + "MaxField" ); + button -l "=>" -c $buttonCallback + ( $mapName + "ApplyUpToMap" ); + floatField -value $mapSrcRed -cc $srcRGBCallback + ( $mapName + "SrcRedField" ); + floatField -value $mapSrcGreen -cc $srcRGBCallback + ( $mapName + "SrcGreenField" ); + floatField -value $mapSrcBlue -cc $srcRGBCallback + ( $mapName + "SrcBlueField" ); + + rowColumnLayout -numberOfColumns 3 + -columnOffset 1 "left" 5 + -columnWidth 1 ( $buttonWidth + 5 ) + -columnWidth 2 $toleranceWidth + -columnWidth 3 ( $buttonWidth + 5 ) + -columnOffset 3 "right" 5 + ( $mapName + "ToleranceSubLayout" ); + { + button -l "<-" -c $backwardCallback + ( $mapName + "ApplyForward" ); + floatField -value $mapTolerance + ( $mapName + "ToleranceField" ); + button -l "->" -c $forwardCallback + ( $mapName + "ApplyBackward" ); + } setParent ..; + + floatField -value $mapDstRed -cc $dstRGBCallback + ( $mapName + "DstRedField" ); + floatField -value $mapDstGreen -cc $dstRGBCallback + ( $mapName + "DstGreenField" ); + floatField -value $mapDstBlue -cc $dstRGBCallback + ( $mapName + "DstBlueField" ); + + } setParent ..; // rowColumnLayout -numberOfColumns 10 + + rowColumnLayout -numberOfColumns 2 + -columnOffset 1 "left" 0 + -columnWidth 1 325 + -columnWidth 2 300 + -columnOffset 2 "right" 10 + ( $mapName + "ColorsSublayout" ); + { + string $srcColorSliderCallback = ( "P3Dmp_changeMapRGBSlider (" + $mapID + ", \"Src\"" + ")" ); + string $dstColorSliderCallback = ( "P3Dmp_changeMapRGBSlider (" + $mapID + ", \"Dst\"" + ")" ); + colorSliderButtonGrp + -rgbValue $mapSrcRed $mapSrcGreen $mapSrcBlue + -cat 1 "left" 115 + -cw 1 10 + -cw 2 50 + -cw 3 115 + -cat 4 "left" 500 + -cw 4 180 + -label "" + -symbolButtonDisplay false + -cc $srcColorSliderCallback + ( $mapName + "SrcColorSlider" ); + colorSliderButtonGrp + -rgbValue $mapDstRed $mapDstGreen $mapDstBlue + -cw 1 10 + -cw 2 50 + -cw 3 115 + -cat 4 "left" 500 + -cw 4 180 + -label "" + -symbolButtonDisplay false + -cc $dstColorSliderCallback + ( $mapName + "DstColorSlider" ); + + } setParent ..; // rowColumnLayout -numberOfColumns 2 + + } setParent ..; // columnLayout + + columnLayout -edit + -enable $mapUse + ( $mapName + "DetailsLayout" ); + + } setParent ..; //rowColumnLayout -numberOfColumns 2 + + setUITemplate -popTemplate; +} + +// Create the maps section of the UI +proc createMappedPrelight ( int $mpNumMaps ) +{ + setUITemplate -pushTemplate attributeEditorTemplate; + + columnLayout + -adjustableColumn true + mpLayout; + { + columnLayout -rs 5 -cat "left" 150; + { + int $forceMinValue; + if ( `optionVar -exists P3D_mpforceMinValue` ) + $forceMinValue = `optionVar -q P3D_mpforceMinValue`; + string $forceCallback = ( "P3Dmp_forceValues ( " + $mpNumMaps + " ) " ); + checkBox + -value $forceMinValue + -al left + -w 200 + -label "Force minimum values" + -cc $forceCallback + forceMinValueCheckBox; + int $useAveSides; + if ( `optionVar -exists P3D_mpUseAveSides` ) + $useAveSides = `optionVar -q P3D_mpUseAveSides`; + checkBox + -value $useAveSides + -al left + -w 200 + -label "Use average of side vertex colours" + useAverageSideCheckBox; + string $averageCallback = "waitCursor -st on; avePrelight; waitCursor -st off;"; + button + -label " Set to average " + -height 22 + -command $averageCallback + mpAverageSideButton; + } setParent ..; + + separator; + rowColumnLayout -numberOfColumns 2 + -rat 1 "top" 5 + -co 1 "left" 212 + -columnWidth 1 312 + -cal 2 "left" + -columnWidth 2 330 + "P3mp_colourHeader"; + { + text -al "center" "Colour 1"; + text -al "center" "Colour 2"; + } setParent ..; + + int $i; + for ( $i = 1; $i <= $mpNumMaps ; $i++ ) + { + separator; + createMapLayout ( $i, $mpNumMaps ); + } + + } setParent ..; + + setUITemplate -popTemplate; +} + +// Create the main window for all prelighting. +global proc mappedPrelightWindow() +{ + int $mpNumMaps = 6; + string $windowName = "mappedPrelightWindow"; + string $windowTitle = "Mapped Prelight (ver. 1.2.0 April 12, 2002)"; + string $iconTitle = "Map Prelight"; + int $windowWidth = 450; + int $windowHeight = 500; + int $windowPosTop = 200; + int $windowPosLft = 220; + + // If the window already exists, just make it visible. + if (`window -exists $windowName`) + { + showWindow $windowName; + P3Dmp_updateAllMappedPrelightGlobal( $mpNumMaps ); + return; + } + + // No window exists so build it. + window + -t $windowTitle + -in $iconTitle + -wh $windowWidth $windowHeight + -tlc $windowPosTop $windowPosLft + -mb true + $windowName; + + // Create the menus + menu -l "File"; + menuItem -l "New colour map" + -c ( "P3Dmp_resetAllValues( " + $mpNumMaps + " )" ); + string $openColour1Callback = ("fileBrowserDialog -m 0 -fc \"P3Dmp_openColourMap " + + $mpNumMaps + " Src \" -ft map -an Open" ); + menuItem -l "Open colour 1..." + -c $openColour1Callback; + string $openColour1Callback = ("fileBrowserDialog -m 0 -fc \"P3Dmp_openColourMap " + + $mpNumMaps + " Dst \" -ft map -an Open" ); + menuItem -l "Open colour 2..." + -c $openColour1Callback; + menuItem -d true; + string $saveColour1Callback = ("fileBrowserDialog -m 1 -fc \"P3Dmp_saveColourMap " + + $mpNumMaps + " Src \" -ft map -an Save" ); + menuItem -l "Save colour 1..." + -c $saveColour1Callback; + string $saveColour2Callback = ("fileBrowserDialog -m 1 -fc \"P3Dmp_saveColourMap " + + $mpNumMaps + " Dst \" -ft map -an Save" ); + menuItem -l "Save colour 2..." + -c $saveColour2Callback; + +// menu -l "Edit"; + + // Create the help menu + addContextHelpProc "mappedPrelightWindow" "P3Dmp_buildMappedPrelightContextHelpItems"; + doHelpMenu "mappedPrelightWindow" "mappedPrelightWindow"; + + // Create main form + setUITemplate -pushTemplate attributeEditorTemplate; + + formLayout + mpMainForm; + { + scrollLayout + -hst 0 mpMainLayout; + { + columnLayout -adjustableColumn true mpMainColumnLayout; + { + // Sampling Options + frameLayout -label "Sampling Options" + -cll 1 -cl 1 + -preExpandCommand "createSamplingOptions (\"mpSamplingOptionsFrame\")" + mpSamplingOptionsFrame; + { + } setParent ..; + + // Basic Prelight + frameLayout -label "Basic Prelight" + -cll 1 -cl 1 + mpBasicPrelight; + { + createBasicPrelight(); + } setParent ..; + + // Mapped Prelight + frameLayout -label "Mapped Prelight" + -cll 1 -cl 0 + mpMappedPrelight; + { + createMappedPrelight ( $mpNumMaps ); + } setParent ..; // mpMainColumnLayout + } setParent..; // mpMainLayout + } setParent..; // mpMainForm + } setParent..; // $windowName + + // Create the main window action buttons + + formLayout + -numberOfDivisions 5 + mpActionButtons; + { + + button + -label "Prelight => Colour 1" + -height 26 + -command ( "P3Dmp_applyPrelightMaps( 1, " + $mpNumMaps + " )" ) + mpApplyButton; + button + -label "Colour 1 <- Colour 2" + -command ( "P3Dmp_applyColourMaps( 1, " + $mpNumMaps + ", 0 )" ) + -height 26 + mpBackwardButton; + button + -label "Colour 1 -> Colour 2" + -command ( "P3Dmp_applyColourMaps( 1, " + $mpNumMaps + ", 1 )" ) + -height 26 + mpForwardButton; + button + -label "Reset" + -height 26 + -command ( "P3Dmp_resetAllValues( " + $mpNumMaps + " )" ) + mpResetButton; + button + -label "Close" + -height 26 + -command ( "deleteUI " + $windowName ) + mpCloseButton; + + formLayout + -edit + -af mpApplyButton left 5 + -ap mpApplyButton right 2 1 + -af mpApplyButton top 5 + -af mpApplyButton bottom 5 + + -ap mpBackwardButton left 3 1 + -ap mpBackwardButton right 2 2 + -af mpBackwardButton top 5 + -af mpBackwardButton bottom 5 + + -ap mpForwardButton left 3 2 + -ap mpForwardButton right 2 3 + -af mpForwardButton top 5 + -af mpForwardButton bottom 5 + + -ap mpResetButton left 3 3 + -ap mpResetButton right 2 4 + -af mpResetButton top 5 + -af mpResetButton bottom 5 + + -ap mpCloseButton left 3 4 + -af mpCloseButton right 5 + -af mpCloseButton top 5 + -af mpCloseButton bottom 5 + mpActionButtons; + } setParent ..; // mpActionButtons + + // Set the layout + formLayout -edit + -af mpMainLayout "top" 0 + -af mpMainLayout "left" 0 + -af mpMainLayout "right" 0 + -ac mpMainLayout "bottom" 5 mpActionButtons + + -an mpActionButtons "top" + -af mpActionButtons "bottom" 5 + -af mpActionButtons "left" 5 + -af mpActionButtons "right" 5 + mpMainForm; + + setUITemplate -popTemplate ; + + // Make sure associated procedures are loaded + source mappedPrelight; + + // Make the window visible + showWindow $windowName; + + // Apply any other global settings to the window. + P3Dmp_updateAllMappedPrelightGlobal( $mpNumMaps ); +} + + diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/nameSpaceGui.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/nameSpaceGui.mel new file mode 100644 index 0000000..6648922 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/nameSpaceGui.mel @@ -0,0 +1,74 @@ +global string $g_P3DNameSpaceField; + +global proc P3DRemoveNameSpaceTool_RemoveNameSpace(string $selectedNodes[], string $nameSpace) +{ + print "called P3DRemoveNameSpaceTool_RemoveNameSpace for:"; + print $selectedNodes; + print "\n"; + for($node in $selectedNodes) + { + string $newName = `substitute $nameSpace $node ""`; + if($newName != "") + { + rename -is $node $newName; + } + } +} + +global proc P3DRemoveNameSpaceTool_RemoveSelected() +{ + global string $g_P3DNameSpaceField; + string $nameSpace = `textField -q -text $g_P3DNameSpaceField`; + string $selectedNodes[] = `ls -sl`; + + P3DRemoveNameSpaceTool_RemoveNameSpace( $selectedNodes, $nameSpace ); +} + +global proc P3DRemoveNameSpaceTool_RemoveHierarchy() +{ + global string $g_P3DNameSpaceField; + string $nameSpace = `textField -q -text $g_P3DNameSpaceField`; + select -add -hi; + string $selectedNodes[] = `ls -sl`; + + P3DRemoveNameSpaceTool_RemoveNameSpace( $selectedNodes, $nameSpace ); +} + + +global proc P3DRemoveNameSpaceTool_GUICreate() +{ + string $windowName = "P3DRemoveNameSpaceTool"; + + global string $g_P3DNameSpaceField; + + if (`window -query -exists $windowName`!=1) + { + window + -width 300 + -height 140 + -minimizeButton false + -maximizeButton false + -sizeable false + -title $windowName + $windowName; + + columnLayout + -adjustableColumn true + -columnAlign "left" + -cat "left" 5; + + text -l "NameSpace"; + $g_P3DNameSpaceField = `textField -width 200`; + + button + -label "Remove Selected" + -command "P3DRemoveNameSpaceTool_RemoveSelected()"; + button + -label "Remove Hierarchy" + -command "P3DRemoveNameSpaceTool_RemoveHierarchy()"; + + showWindow $windowName; + } +} + +P3DRemoveNameSpaceTool_GUICreate();
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/optimizeShaders.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/optimizeShaders.mel new file mode 100644 index 0000000..8ddc804 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/optimizeShaders.mel @@ -0,0 +1,1046 @@ +//=========================================================================== +// Copyright ©2002 Radical Entertainment Ltd. All rights reserved. +// +// Created: 17 April, 2002 +// +// Component: optimizeShaders.mel +// +// Description: Sorts file textures by their '.fileTextureName' attributes, +// and for those whose input file matches compares all input +// attributes to see if they can be considered equivalent. +// Equivalent file textures are "merged" so one serves the +// duties previously served by both. +// +// Materials and Shading Groups are evaluated and optimized +// in similar fashion. +// +// Constraints: +// +// Creator: Bryan Ewert +// +//=========================================================================== + + +//=========================================================================== +// version +//=========================================================================== +// Description: Returns the current version for this MEL script. +// Used for version control. +// +// Constraints: Used with assertCurrent(). +// +//=========================================================================== +proc float version() +{ + return ( 1.1 ); +} + +// //////////////////////////////////////////////////////////////// +// rootNode +// +// Description: Strips the dot-suffix of the specified string. +// e.g. "object.attribute" is returned as "object" +proc string rootNode( string $object ) +{ + string $buffer[]; + tokenize $object "." $buffer; + return $buffer[0]; +} + +//=========================================================================== +// hasInput +//=========================================================================== +// Description: Returns TRUE if specified attribute has an input connection. +// +// Constraints: +// +// Parameters: string $node: The node. +// string $attr: The attribute. +// +// Return: TRUE if specified attribute has an input connection; +// else FALSE. +// +//=========================================================================== +proc int hasInput( string $node, string $attr ) +{ + int $hasInput = false; + if ( `attributeQuery -node $node -exists $attr` ) + { + string $c[] = `listConnections -d false -s true ( $node + "." + $attr )`; + $hasInput = ( $c[0] != "" ); + } + return $hasInput; +} + +//=========================================================================== +// isMinorType +//=========================================================================== +// Description: Compares the type of the specified node against those in +// a static list. If the type matches it is considered a +// minor type. This is used to determine the "significance" +// of a connection to a node. If a node's connections serve +// only nodes of these types then it is assumed that the node +// may be safely deleted without impacting scene requirements. +// +// Constraints: +// +// Parameters: string $node: The node to evaluate. +// +// Return: (int): TRUE if specified node is a minor type; else FALSE. +// +//=========================================================================== +proc int isMinorType( string $node ) +{ + int $isMinorType = false; + + string $minorNodeTypes[] = + { + "defaultLightList", + "defaultRenderUtilityList", + "defaultShaderList", + "defaultTextureList", + "lightLinker", + "materialInfo", + "partition" + }; + + string $nodeType = `nodeType $node`; + + for ( $minor in $minorNodeTypes ) + { + if ( $minor == $nodeType ) + { + $isMinorType = true; + break; + } + } + + return $isMinorType; +} + +//=========================================================================== +// hasOnlyMinorOutputConnections +//=========================================================================== +// Description: Considers all output connections from the specified node +// and determines if all of them may be considered "minor." +// A minor connection is one which serves only the node in +// question and not other parts of the scene. If a node +// provides no connections to other significant nodes in the +// scene it may be considered safe to delete without impacting +// scene requirements. +// +// Constraints: +// +// Parameters: string $node: The node to evaluate. +// +// Return: (int): TRUE if all output connections are minor, or if node +// has no output connections; FALSE if at least one +// non-minor connection exists. +// +//=========================================================================== +proc int hasOnlyMinorOutputConnections( string $node ) +{ + int $onlyMinorTypes = true; + + string $outputs[] = `listConnections -s false -d true $node`; + for ( $c in $outputs ) + { + if ( !isMinorType( $c ) ) + { + $onlyMinorTypes = false; + break; + } + } + + return $onlyMinorTypes; +} + +//=========================================================================== +// safeDelete +//=========================================================================== +// Description: Deletes the specified node _only_ if it is considered to have +// little impact on the scene. +// +// All nodes providing input connections to the specified node +// are evaluated in iterative fashion. +// +// Constraints: +// +// Parameters: string $node: The node that will be deleted. +// +// Return: (none) +// +//=========================================================================== +proc safeDelete( string $node ) +{ + if ( `objExists $node` ) + { + string $inputs[] = `listConnections -s true -d false $node`; + + if ( hasOnlyMinorOutputConnections( $node ) ) + { + delete $node; + } + + for ( $i in $inputs ) + { + safeDelete( $i ); + } + } +} + +//=========================================================================== +// compareInt +//=========================================================================== +// Description: Performs an integer comparison for one attribute on +// two nodes. +// +// Constraints: This handles all "int" relatives; e.g. enum, short, bool. +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareInt( string $node1, string $node2, string $attr ) +{ + int $i1 = `getAttr ( $node1 + "." + $attr )`; + int $i2 = `getAttr ( $node2 + "." + $attr )`; + return ( $i1 == $i2 ); +} + +//=========================================================================== +// compareFloat +//=========================================================================== +// Description: Performs a float comparison for one attribute on +// two nodes. +// +// Constraints: This handles all "float" relatives; e.g. doubleAngle +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareFloat( string $node1, string $node2, string $attr ) +{ + float $f1 = `getAttr ( $node1 + "." + $attr )`; + float $f2 = `getAttr ( $node2 + "." + $attr )`; + return ( $f1 == $f2 ); +} + +//=========================================================================== +// compareFloat2 +//=========================================================================== +// Description: Performs a float2 comparison (i.e. array of two floats) +// for one attribute on two nodes. +// +// Constraints: +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareFloat2( string $node1, string $node2, string $attr ) +{ + float $f1[2] = `getAttr ( $node1 + "." + $attr )`; + float $f2[2] = `getAttr ( $node2 + "." + $attr )`; + return ( ( $f1[0] == $f2[0] ) && ( $f1[1] == $f2[1] ) ); +} + +//=========================================================================== +// compareFloat3 +//=========================================================================== +// Description: Performs a vector comparison for one attribute on +// two nodes. This would commonly be used to compare +// color attributes. +// +// Constraints: +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareFloat3( string $node1, string $node2, string $attr ) +{ + float $f1[3] = `getAttr ( $node1 + "." + $attr )`; + float $f2[3] = `getAttr ( $node2 + "." + $attr )`; + return ( ( $f1[0] == $f2[0] ) && ( $f1[1] == $f2[1] ) && ( $f1[2] == $f2[2] ) ); +} + +//=========================================================================== +// compareString +//=========================================================================== +// Description: Performs a string comparison for one attribute on +// two nodes. +// +// Constraints: +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareString( string $node1, string $node2, string $attr ) +{ + string $s1 = `getAttr ( $node1 + "." + $attr )`; + string $s2 = `getAttr ( $node1 + "." + $attr )`; + return ( $s1 == $s2 ); +} + +//=========================================================================== +// compareConnections +//=========================================================================== +// Description: Compares the connections for one attribute on two nodes. +// +// If neither attribute is connected, the attributes match. +// +// If one attribute is connected but the other is not, then +// the attributes do not match. +// +// If both attributes are connected there is a match only if +// both connections are to the same node. +// +// Constraints: +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareConnections( string $node1, string $node2, string $attr ) +{ + // If neither has this attribute, consider it a match. + if ( !`attributeQuery -node $node1 -exists $attr` && !`attributeQuery -node $node2 -exists $attr` ) + { + return true; + } + + // If one has the attribute, but the other doesn't, no match. + if ( + ( `attributeQuery -node $node1 -exists $attr` && !`attributeQuery -node $node2 -exists $attr` ) || + ( !`attributeQuery -node $node1 -exists $attr` && `attributeQuery -node $node2 -exists $attr` ) + ) + { + return false; + } + + string $c1[] = `listConnections -d false -s true ( $node1 + "." + $attr )`; + string $c2[] = `listConnections -d false -s true ( $node2 + "." + $attr )`; + + // TRUE if neither or connected, or both are connected to the same node. + return ( $c1[0] == $c2[0] ); +} + +//=========================================================================== +// compareAttributes +//=========================================================================== +// Description: Compares the value for one attribute on two nodes. +// The attribute type is used to determine the type of +// comparison performed. The attribute must exist on both +// nodes, and the attribute type must be the same for both +// nodes, else the two do not match. +// +// Constraints: +// +// Parameters: string $node1: The first node. +// string $node2: The second node. +// string $attr: The attribute for both nodes which is compared. +// +// Return: (int): TRUE if attributes match; else FALSE. +// +//=========================================================================== +proc int compareAttributes( string $node1, string $node2, string $attr ) +{ + int $isEqual = true; + + // If neither has this attribute, consider it a match. + if ( !`attributeQuery -node $node1 -exists $attr` && !`attributeQuery -node $node2 -exists $attr` ) + { + // Some objects have different attributes than others (e.g. lambert and layered shaders) +// warning( "! Attributes don't exist in compareAttributes( " + $node1 + ", " + $node2 + " ) !" ); + return true; + } + + // If one has the attribute, but the other doesn't, no match. + if ( + ( `attributeQuery -node $node1 -exists $attr` && !`attributeQuery -node $node2 -exists $attr` ) || + ( !`attributeQuery -node $node1 -exists $attr` && `attributeQuery -node $node2 -exists $attr` ) + ) + { + // This would be a bug. The script should take care that this will not happen. + warning( "! Attribute mismatch in compareAttributes( " + $node1 + ", " + $node2 + " ) !" ); + return false; + } + + // If one is connected but the other isn't, don't consider them equal. + if ( ( hasInput( $node1, $attr ) && !hasInput( $node2, $attr ) ) || + ( !hasInput( $node1, $attr ) && hasInput( $node2, $attr ) ) + ) + { +// warning( "! Connection mismatch in compareAttributes( " + $node1 + ", " + $node2 + " ) !" ); + return false; + } + + string $attrType1 = `getAttr -type ( $node1 + "." + $attr )`; + string $attrType2 = `getAttr -type ( $node2 + "." + $attr )`; + + if ( $attrType1 != $attrType2 ) return false; + + switch ( $attrType1 ) + { + case "bool": + case "enum": + case "short": + { + $isEqual = compareInt( $node1, $node2, $attr ); + break; + } + case "doubleAngle": + case "float": + { + $isEqual = compareFloat( $node1, $node2, $attr ); + break; + } + case "float2": + { + $isEqual = compareFloat2( $node1, $node2, $attr ); + break; + } + case "float3": + { + // As if this will work... likely a colour attribute and + // this will just compare black to black. + $isEqual = compareFloat3( $node1, $node2, $attr ); + break; + } + case "string": + { + $isEqual = compareString( $node1, $node2, $attr ); + break; + } + default: + { + error ( "Unsupported attribute type: " + $attrType1 ); + break; + } + } + + return $isEqual; +} + +//=========================================================================== +// mergeShadingGroup +//=========================================================================== +// Description: The two Shading Groups have been deemed to be equal. +// The members for the latter are assigned to the former and +// the latter is deleted from the scene. +// +// Constraints: +// +// Parameters: string $sg1: The Shading Group to keep. +// string $sg2: The Shading Group to discard. +// +// Return: (none) +// +//=========================================================================== +proc mergeShadingGroup( string $sg1, string $sg2 ) +{ + string $members[] = `sets -q $sg2`; + if ( `size $members` > 0 ) // just to avert useless Maya warning + { + sets -forceElement $sg1 $members; + } + safeDelete( $sg2 ); +} + +//=========================================================================== +// compareShadingGroups +//=========================================================================== +// Description: Compares the connections and attributes for two specified +// Shading Groups and evaluates if they can be considered +// equivalent. If equivalent, the two are merged. +// +// Constraints: If the two Shading Groups are equal, $sg2 will likely be +// deleted from the scene and will not exist when this function +// call returns. +// +// Parameters: string $sg1: The first Shading Group. +// string $sg2: The second Shading Group. +// +// Return: (int): TRUE if the two Shading Groups are equal; else FALSE. +// If TRUE it is likely that $sg2 was deleted. +// +//=========================================================================== +proc int compareShadingGroups( string $sg1, string $sg2 ) +{ + int $isEqual = true; + + // Has same alpha? + $isEqual = $isEqual && compareConnections( $sg1, $sg2, "surfaceShader" ); + + $isEqual = $isEqual && compareConnections( $sg1, $sg2, "volumeShader" ); + + $isEqual = $isEqual && compareConnections( $sg1, $sg2, "displacementShader" ); + + $isEqual = $isEqual && compareAttributes( $sg1, $sg2, "memberWireframeColor" ); + + if ( $isEqual ) + { + mergeShadingGroup( $sg1, $sg2 ); + } + + return $isEqual; +} + +//=========================================================================== +// mergeMaterial +//=========================================================================== +// Description: The two Materials have been deemed to be equal. +// The former adopts the output connections for the latter and +// the latter is deleted from the scene. +// +// Constraints: +// +// Parameters: string $sg1: The Material to keep. +// string $sg2: The Material to discard. +// +// Return: (none) +// +//=========================================================================== +proc mergeMaterial( string $mat1, string $mat2 ) +{ + string $c1[] = `listConnections ( $mat1 + ".outColor" )`; + string $c2[] = `listConnections ( $mat2 + ".outColor" )`; + + // If no connection, or if connections are already the same, take no action. + if ( ( $c1[0] != "" && $c2[0] != "" ) && ( $c1[0] != $c2[0] ) ) + { + // Deprecate and delete $mat2 + string $cc[] = `listConnections -source false -d true -plugs true ( $mat2 + ".outColor" )`; + disconnectAttr ( $mat2 + ".outColor" ) $cc[0]; + + connectAttr ( $mat1 + ".outColor" ) $cc[0]; + + safeDelete( $mat2 ); + } +} + +//=========================================================================== +// compareMaterials +//=========================================================================== +// Description: Compares the connections and attributes for two specified +// Materials and evaluates if they can be considered +// equivalent. If equivalent, the two are merged. +// +// Constraints: If the two Materials are equal, $mat2 will likely be +// deleted from the scene and will not exist when this function +// call returns. +// +// Parameters: string $mat1: The first Material. +// string $mat2: The second Material. +// +// Return: (int): TRUE if the two Materials are equal; else FALSE. +// If TRUE it is likely that $mat2 was deleted. +// +//=========================================================================== +proc int compareMaterials( string $mat1, string $mat2 ) +{ + int $isEqual = true; + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "color" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "color" ); + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "transparency" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "transparency" ); + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "ambient" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "ambient" ); + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "diffuse" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "diffuse" ); + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "emissive" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "emissive" ); + + $isEqual = $isEqual && compareConnections( $mat1, $mat2, "specular" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "specular" ); + + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "shininess" ); + + // Pure3D attributes + // '.pddiShaderName' will short-circuit the remainder if shader types aren't equal. + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "pddiShaderName" ); + + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "alphaCompare" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "alphaTest" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "blendMode" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "doubleSided" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "dynamicallyLit" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "filterMode" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "isLightMapped" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "isLit" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "isTranslucent" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "K" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "L" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "mipmapmax" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "mipmapmin" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "mmsharpness" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "prelightMode" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "proceduralXRes" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "proceduralYRes" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "shadeMode" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "shininess" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "uvMode" ); + $isEqual = $isEqual && compareAttributes( $mat1, $mat2, "vertexShaderName" ); + + if ( $isEqual ) + { + // Navigate to each Material and compare them. + string $out1[] = `listConnections ( $mat1 + ".outColor" )`; + string $out2[] = `listConnections ( $mat2 + ".outColor" )`; + + mergeMaterial( $mat1, $mat2 ); + + compareShadingGroups( $out1[0], $out2[0] ); + } + + return $isEqual; +} + +//=========================================================================== +// mergeFile +//=========================================================================== +// Description: The two file textures have been deemed to be equal. +// The former adopts the output connections for the latter and +// the latter is deleted from the scene. +// +// Constraints: +// +// Parameters: string $file1: The file texture to keep. +// string $file2: The file texture to discard. +// +// Return: (none) +// +//=========================================================================== +proc mergeFile( string $file1, string $file2 ) +{ + string $c1[] = `listConnections ( $file1 + ".outColor" )`; + string $c2[] = `listConnections ( $file2 + ".outColor" )`; + + // If no connection, or if connections are already the same, take no action. + if ( ( $c1[0] != "" && $c2[0] != "" ) && ( $c1[0] != $c2[0] ) ) + { + string $cc[] = `listConnections -source false -d true -plugs true ( $file2 + ".outColor" )`; + disconnectAttr ( $file2 + ".outColor" ) $cc[0]; + + connectAttr ( $file1 + ".outColor" ) $cc[0]; + + safeDelete( $file2 ); + } +} + +//=========================================================================== +// compareFiles +//=========================================================================== +// Description: Compares the connections and attributes for two specified +// file textures and evaluates if they can be considered +// equivalent. If equivalent, the two are merged. +// +// Constraints: If the two file textures are equal, $file2 will likely be +// deleted from the scene and will not exist when this function +// call returns. +// +// Parameters: string $file1: The first file texture. +// string $file2: The second file texture. +// +// Return: (int): TRUE if the two file textures are equal; else FALSE. +// If TRUE it is likely that $file2 was deleted. +// +//=========================================================================== +global proc int compareFiles( string $file1, string $file2 ) +{ + int $isEqual = true; + + // Compare place2d attributes + $isEqual = $isEqual && compareAttributes( $file1, $file2, "coverage" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "mirror" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "noiseUV" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "offset" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "uvFilterSize" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "repeatUV" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "rotateFrame" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "rotateUV" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "stagger" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "translateFrame" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "wrapU" ); + $isEqual = $isEqual && compareAttributes( $file1, $file2, "wrapV" ); + + if ( $isEqual ) + { + // Navigate to each Material and compare them. + string $out1[] = `listConnections ( $file1 + ".outColor" )`; + string $out2[] = `listConnections ( $file2 + ".outColor" )`; + + mergeFile( $file1, $file2 ); + + if ( $out1[0] != "" && $out2[0] != "" ) + { + $isEqual = compareMaterials( $out1[0], $out2[0] ); + } + } + + return $isEqual; +} + +//=========================================================================== +// getSortedShadingGroups +//=========================================================================== +// Description: It is only relevant to compare two Shading Groups for merging +// if they share the same Surface Shader. This returns an array +// of all Shading Groups sorted by the names of the nodes +// connected to their .surfaceShader inputs. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (string[]): Array of all Shading Groups, sorted by their +// '.surfaceShader' inputs. +// +//=========================================================================== +proc string[] getSortedShadingGroups() +{ + string $allShadingGroups[]; + + string $shadingGroups[] = `ls -type "shadingEngine"`; + + for ( $f in $shadingGroups ) + { + string $cc[] = `listConnections -d false -s true ( $f + ".surfaceShader" )`; + $allShadingGroups[`size $allShadingGroups`] = ( $cc[0] + "*" + $f ); + } + + $allShadingGroups = `sort $allShadingGroups`; + clear $shadingGroups; + + for ( $f in $allShadingGroups ) + { + string $tokens[]; + tokenize $f "*" $tokens; + + $shadingGroups[`size $shadingGroups`] = $tokens[1]; + } + + return $shadingGroups; +} + +//=========================================================================== +// getSortedMaterials +//=========================================================================== +// Description: It is only relevant to compare two Materials for merging +// if they share the same Color connection. This returns an +// array of all Materials sorted by the names of the nodes +// connected to their .color inputs. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (string[]): Array of all Materials, sorted by their +// '.color' inputs. +// +//=========================================================================== +proc string[] getSortedMaterials() +{ + string $allMaterials[]; + + string $materials[] = `ls -materials`; + + for ( $f in $materials ) + { + string $cc[] = `listConnections -d false -s true ( $f + ".color" )`; + $allMaterials[`size $allMaterials`] = ( $cc[0] + "*" + $f ); + } + + $allMaterials = `sort $allMaterials`; + clear $materials; + + for ( $f in $allMaterials ) + { + string $tokens[]; + tokenize $f "*" $tokens; + + $materials[`size $materials`] = $tokens[1]; + } + + return $materials; +} + +//=========================================================================== +// getSortedFileTextures +//=========================================================================== +// Description: It is only relevant to compare two file textures for merging +// if they share the same input file. This returns an array +// of all file textures sorted by the names of their source +// files, obtained from the '.fileTextureName' attribute. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (string[]): Array of all file textures, sorted by their +// '.fileTextureName' inputs. +// +//=========================================================================== +proc string[] getSortedFileTextures() +{ + string $allFiles[]; + + string $files[] = `ls -type "file"`; + + for ( $f in $files ) + { + string $ftn = `getAttr ( $f + ".fileTextureName" )`; + $allFiles[`size $allFiles`] = ( $ftn + "*" + $f ); + } + + $allFiles = `sort $allFiles`; + clear $files; + + for ( $f in $allFiles ) + { + string $tokens[]; + tokenize $f "*" $tokens; + + $files[`size $files`] = $tokens[1]; + } + + return $files; +} + +//=========================================================================== +// optimizeShadingGroups +//=========================================================================== +// Description: Entry point to optimize Shading Groups. +// +// Constraints: Will not attempt to merge Materials that could serve to +// optimize Shading Groups. Only Shading Groups already sharing +// a common Material will be merged. +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +proc optimizeShadingGroups() +{ + waitCursor -state on; + + string $sgs[] = getSortedShadingGroups(); + + int $startSG = `size $sgs`; + + int $f; + for ( $f = 0; $f < `size $sgs` - 1; $f++ ) + { + // Previous optimization may have deleted this node + string $sg1 = ""; + while ( $f < `size $sgs` - 1 ) + { + if ( `objExists $sgs[$f]` ) + { + $sg1 = $sgs[$f]; + break; + } + + $f++; + } + + if ( $sg1 == "" ) break; + + string $sg2 = $sgs[$f+1]; + + compareShadingGroups( $sg1, $sg2 ); + } + + $sgs = `ls -type "shadingEngine"`; + int $endSG = `size $sgs`; + + print ( "optimizeShadingGroups removed " + ( $startSG- $endSG ) + " shadingGroups.\n" ); + + waitCursor -state off; +} + +//=========================================================================== +// optimizeMaterials +//=========================================================================== +// Description: Entry point to optimize Materials. +// +// Constraints: Will not attempt to merge file textures that could serve to +// optimize Materials. Only Materials already sharing a +// common file texture node will be merged. +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc optimizeMaterials() +{ + waitCursor -state on; + + string $materials[] = getSortedMaterials(); + int $startCount = `size $materials`; + + int $f; + for ( $f = 0; $f < `size $materials` - 1; $f++ ) + { + // Previous optimization may have deleted this node + string $mat1 = ""; + while ( $f < `size $materials` - 1 ) + { + if ( `objExists $materials[$f]` ) + { + $mat1 = $materials[$f]; + break; + } + + $f++; + } + + if ( $mat1 == "" ) break; + + string $mat2 = $materials[$f+1]; + + compareMaterials( $mat1, $mat2 ); + } + + $materials = `ls -materials`; + int $endCount = `size $materials`; + + print ( "optimizeMaterials removed " + ( $startCount - $endCount ) + " materials.\n" ); + + waitCursor -state off; +} + +//=========================================================================== +// optimizeFileTextures +//=========================================================================== +// Description: Entry point to optimize file textures. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc optimizeFileTextures() +{ + waitCursor -state on; + + string $files[] = getSortedFileTextures(); + string $materials[] = `ls -materials`; + string $sgs[] = `ls -type "shadingEngine"`; + + int $startFiles = `size $files`; + int $startMaterials = `size $materials`; + int $startSG = `size $sgs`; + + int $f; + for ( $f = 0; $f < `size $files` - 1; $f++ ) + { + // Previous optimization may have deleted this node + string $file1 = $files[$f]; + $file2 = ""; + + if ( !`objExists $file1` ) continue; + + int $g = $f+1; + while ( $g < `size $files` - 1 ) + { + if ( `objExists $files[$g]` ) + { + $file2 = $files[$g]; + break; + } + + $g++; + } + + if ( $file1 != "" && $file2 != "" ) + { + string $ftn1 = `getAttr( $file1 + ".fileTextureName" )`; + string $ftn2 = `getAttr( $file2 + ".fileTextureName" )`; + + if ( $ftn1 == $ftn2 ) + { + $isEqual = compareFiles( $file1, $file2 ); + } + } + } + + $files = `ls -type "file"`; + $materials = `ls -materials`; + $sgs = `ls -type "shadingEngine"`; + + int $endFiles = `size $files`; + int $endMaterials = `size $materials`; + int $endSG = `size $sgs`; + + print ( "optimizeFileTextures removed: " + ( $startFiles - $endFiles ) + " file textures; " + ( $startMaterials - $endMaterials ) + " materials; " + ( $startSG - $endSG ) + " shadingGroups.\n" ); + + waitCursor -state off; +} + +//=========================================================================== +// optimizeShaders +//=========================================================================== +// Description: Sorts file textures by their '.fileTextureName' attributes, +// and for those whose input file matches compares all input +// attributes to see if they can be considered equivalent. +// Equivalent file textures are "merged" so one serves the +// duties previously served by both. +// +// Materials and Shading Groups are evaluated and optimized +// in similar fashion. +// +// Constraints: Note that optimizing file textures implies optimization for +// the Material connected to the optimized file texture, which +// consequently optimizes the Shading Groups connected to +// the optimized Material. +// +// It is not uncommon that the optimizeMaterials() and +// optimizeShadingGroups() calls here will yield no additional +// results after optimizeFileTextures() has completed its run. +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc optimizeShaders() +{ + optimizeFileTextures(); + optimizeMaterials(); + optimizeShadingGroups(); +} + +/* +source optimizeShaders; optimizeShaders; +*/ diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameScripts.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameScripts.mel new file mode 100644 index 0000000..88045b8 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameScripts.mel @@ -0,0 +1,313 @@ +// Rename Shape and BV node +// Alias|Wavefront Script File +// +// Creation Date: 2001 +// Author: (Novy) Gurdarshan Dhillon +// +// +// +// Description: +// Rename the transform, shape, and BV nodes in a hierarchy +// to a specified name. +// +// +// +// Input Arguments: +// None. +// Return Values: +// None. +// renameShape +// + +global proc renameShape(string $newName) +{ + if (`size($newName)`>0) + { + string $objects[] = `ls -sl`; + + for ($object in $objects) + { + string $children[]; + clear ($children); + int $count = 1; + int $count2 = 1; + if(`nodeType $object` == "transform") + { + $object = `rename $object $newName`; + print ("\nTopnode : " + $object); + //for each object in list get the sub objects. + $children = `listRelatives -ad -pa $object`; + } + if(`nodeType $object` == "joint") + { + $children[0]= $object; + } + for($child in $children) + { + // check if the subobjects are transform and continue + string $postfix = ""; + if(`nodeType $child` == "transform") + { + print ("\nTransform : " + $child); + $child = `rename $child ($newName + $count)`; + string $shapes[] = `listRelatives -s $child`; + for ($shape in $shapes) + { + if(`nodeType $shape` == "mesh") + { + print ("\nMesh : " + $shape); + rename $shape ($newName + $count + "Shape"); + } + } + $count++; + } + // check if the sub objects are joints and continue + else if(`nodeType $child` == "joint") + { + print ("\nTransform : " + $child); + $child = `rename $child ($newName + $count + "_BV")`; + string $shapes[] = `listRelatives -s $child`; + for ($shape in $shapes) + { + if(`nodeType $shape` == "p3dBoundVolShape") + { + print ("\nMesh : " + $shape); + rename $shape ($newName + $count + "_BV" + "Shape"); + } + } + $count++; + } + } + } + } +} + + +// Rename Texture node +// Alias|Wavefront Script File +// +// Creation Date: 20 March. 2001 +// Author: (Novy) Gurdarshan Dhillon +// +// +// +// Description: +// Renames the texture node to corrisponde to the +// image file that it contains. Also outputs the +// images resolution. +// +// +// +// Input Arguments: +// None. +// Return Values: +// None. +// renameTexture +// + +global proc renameTexture() +{ + string $files[] = `ls -type "file"`; + string $imageName; + print ("\nRename Info"); + for ($file in $files) + { + print ("\n-------------------------------------"); + $imageName = `getAttr ($file + ".fileTextureName")`; + string $path[]; + string $token[]; + tokenize $imageName "/" $path; + tokenize $path[(`size $path` -1)] "." $token; + $file = `rename $file ($token[0] + "_t")`; + string $fileConnections[] = `listConnections ($file + ".outColor")`; + + float $res[] = `getAttr ($file + ".outSize")`; + print ("\nFile: " + $imageName + " " + $res[0] + " × " + $res[1]); + print ("\nFile Texture Node: " + $file); + for ($con in $fileConnections) + { + string $match1; + string $match2; + string $nodeType = `nodeType $con`; + $match1 = `match "Texture" $nodeType`; + $match2 = `match "Shader" $nodeType`; + if (`size $match1` > 0) + { + if(`nodeType $con` == "layeredTexture") + { + string $layeredShaderColor1Con[] = `listConnections ($con + ".inputs[0].color")`; + if(`nodeType $layeredShaderColor1Con[0]` == "file") + { + string $image = `getAttr ($layeredShaderColor1Con[0] + ".fileTextureName")`; + string $path[]; + string $token[]; + int $size = `tokenize $image "/" $path`; + tokenize $path[$size -1] "." $token; + $con = `rename $con ($token[0] + "_layered")`; + print ("\nLayered Texture Node: " + $con); + } + } + } + else if (`size $match2` > 0) + { + string $shadingEngines[]; + string $token[]; + if(`nodeType $con` == "pure3dLayeredShader") + { + string $layeredShaderColor1Con[] = `listConnections ($con + ".bottomtex")`; + if(`nodeType $layeredShaderColor1Con[0]` == "file") + { + string $image = `getAttr ($layeredShaderColor1Con[0] + ".fileTextureName")`; + string $path[]; + int $size = `tokenize $image "/" $path`; + tokenize $path[$size -1] "." $token; + $con = `rename $con ($token[0] + "_m")`; + $shadingEngines = `listConnections ($con + ".outColor")`; + print ("\nMaterial Node: " + $con); + } + } + else + { + string $layeredShaderColor1Con[] = `listConnections ($con + ".color")`; + if(`nodeType $layeredShaderColor1Con[0]` == "file") + { + string $image = `getAttr ($layeredShaderColor1Con[0] + ".fileTextureName")`; + string $path[]; + int $size = `tokenize $image "/" $path`; + tokenize $path[$size -1] "." $token; + $con = `rename $con ($token[0] + "_m")`; + $shadingEngines = `listConnections ($con + ".outColor")`; + print ("\nMaterial Node: " + $con); + } + } + for ($se in $shadingEngines) + { + $se = `rename $se ($token[0] + "_shg")`; + print ("\nShading Engine: " + $se); + } + } + } + } +} + + +global proc fileRes() +{ + string $textures[] = `ls -type "file"`; + for($texture in $textures) + { + string $attr = $texture + ".fileTextureName"; + string $file = `getAttr $attr`; + string $attr = $texture + ".outSize"; + float $res[] = `getAttr $attr`; + print ("\n" + $file + " " + $res[0] + " × " + $res[1]); + } +} + +global proc removeShapefromNode() +{ + string $transforms[] = `ls -sl -tr -l`; + if(size($transforms)) + { + for($transform in $transforms) + { + string $relatives[] = `listRelatives -ad -f $transform`; + if (size($relatives)) + { + for ($child in $relatives) + { + if(`nodeType($child)` == "mesh") + { + string $path[]; + int $num = `tokenize $child "|" $path`; + rename $child $path[$num-2]; + } + } + } + else + { + error("Empty Transform Node!"); + + } + } + } + else + {error ("Please select a transform node.");} +} + +global proc renameTextureOld() +{ + string $textures[] = `ls -type "file" -type "ramp"`; + for($texture in $textures) + { + string $attr; + string $image[]; + string $file; + int $num; + int $size; + string $name; + string $fileNode; + if (`nodeType $texture` == "file") + { + $attr = $texture + ".fileTextureName"; + $file = `getAttr $attr`; + + $num = `tokenize $file "/" $image`; + $num = `tokenize $image[$num-1] "." $image`; + $attr = $texture + ".outSize"; + float $res[] = `getAttr $attr`; + print ("\nFile: " + $file + " " + $res[0] + " × " + $res[1]); + $size = size($image[0]); + $name = `substring $image[0] 1 ($size)`; + $fileNode = `rename $texture ($name + "_t")`; + print ("\nFileNode: " + $fileNode); + } + else if(`nodeType $texture` == "ramp") + { + print ("ramp " + $texture); + $image[0] = $texture; + $fileNode = $texture; + } + $attr = $fileNode + ".outColor"; + string $shaders[] = `listConnections -d 1 -s 0 $attr`; + // string $shader = $shaders[(size($shaders)-1)]; + for ($shader in $shaders) + { + if ($shader != "lambert1" || $shader != "particleCloud1") + { + string $colorCon[]; + if (`nodeType $shader` != "layeredTexture") + { + $colorCon = `listConnections ($shader + ".color")`; + //if (size($colorCon[0]) > 0) + { + $name = $image[0] + "_m"; + } + } + else + { + $colorCon = `listConnections ($shader + ".inputs[0].color")`; + if (size($colorCon[0]) > 0) + { + $name = $image[0] + "_layered"; + } + } + + string $shadeNode = `rename $shader ($name)`; + print ("\nShading Node: " + $shadeNode); + $attr = $shadeNode + ".outColor"; + string $engines[] = `listConnections -d 1 -s 0 $attr`; + if (size($engines)) + { + for ($engine in $engines) + { + $name = $image[0] + "_shg"; + string $engineNode = `rename $engine ($name)`; + print ("\nShading Engine: " + $engineNode); + } + } + } + } + print ("\n----------------------------------------\n"); + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameTexture.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameTexture.mel new file mode 100644 index 0000000..4cf0db4 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/renameTexture.mel @@ -0,0 +1,94 @@ +// renameTexture.mel +// Rename Texture node +// Alias|Wavefront Script File +// +// Creation Date: 20 March. 2001 +// Author: (Novy) Gurdarshan Dhillon +// +// +// +// Description: +// Renames the texture node to corrisponde to the +// image file that it contains. Also outputs the +// images resolution. +// +// +// +// Input Arguments: +// None. +// Return Values: +// None. +// renameTexture +// + + +global proc renameTexture() +{ + string $textures[] = `ls -type "file" -type "ramp"`; + for($texture in $textures) + { + string $attr; + string $image[]; + string $file; + int $num; + int $size; + string $name; + string $fileNode; + if (`nodeType $texture` == "file") + { + $attr = $texture + ".fileTextureName"; + $file = `getAttr $attr`; + + $num = `tokenize $file "/" $image`; + $num = `tokenize $image[$num-1] "." $image`; + $attr = $texture + ".outSize"; + float $res[] = `getAttr $attr`; + print ("\nFile: " + $file + " " + $res[0] + " × " + $res[1]); + $size = size($image[0]); + $name = `substring $image[0] 1 ($size)`; + $fileNode = `rename $texture ($name + "_t")`; + print ("\nFileNode: " + $fileNode); + } + else if(`nodeType $texture` == "ramp") + { + print ("ramp " + $texture); + $image[0] = $texture; + $fileNode = $texture; + } + $attr = $fileNode + ".outColor"; + string $shaders[] = `listConnections -d 1 -s 0 -p 1 $attr`; + // string $shader = $shaders[(size($shaders)-1)]; + for ($shader in $shaders) + { + string $info[]; tokenize $shader "." $info; + if($info[1] == "color") + { + $name = $image[0] + "_m"; + string $shadeNode = `rename $info[0] ($name)`; + print ("\nShading Node: " + $shadeNode); + $attr = $shadeNode + ".outColor"; + string $engines[] = `listConnections -d 1 -s 0 $attr`; + for ($engine in $engines) + { + $name = $image[0] + "_shg"; + string $engineNode = `rename $engine ($name)`; + print ("\nShading Engine: " + $engineNode); + } + } + } + print ("\n----------------------------------------\n"); + } +} + +global proc fileRes() +{ + string $textures[] = `ls -type "file"`; + for($texture in $textures) + { + string $attr = $texture + ".fileTextureName"; + string $file = `getAttr $attr`; + string $attr = $texture + ".outSize"; + float $res[] = `getAttr $attr`; + print ("\n" + $file + " " + $res[0] + " × " + $res[1]); + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceSimpleShaderWithLambert.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceSimpleShaderWithLambert.mel new file mode 100644 index 0000000..7f56139 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceSimpleShaderWithLambert.mel @@ -0,0 +1,152 @@ +//=========================================================================== +// Copyright ©2002 Radical Entertainment Ltd. All rights reserved. +// +// Created: 11 April, 2002 +// +// Component: replaceSimpleShaderWithLambert.mel +// +// Description: Replaces all pure3dSimpleShaders with Maya's lambert. +// +// Constraints: Attributes that map 1:1 are restored; anything else isn't. +// +// Creator: Bryan Ewert +// +//=========================================================================== + +proc string rootNode( string $object ) +{ + string $buffer[]; + tokenize $object "." $buffer; + return $buffer[0]; +} + +//=========================================================================== +// arrayMatch +//=========================================================================== +// Description: This is copied directly from Maya's "replaceNode.mel" +// +//=========================================================================== +proc int arrayMatch( string $array[], string $match ) +{ + for ($item in $array) + if ($item == $match) + return true; + + return false; +} + +//=========================================================================== +// myReplaceNode +//=========================================================================== +// Description: This is mostly copied directly from Maya's "replaceNode.mel" +// +// As is usual with Maya scripts, it spewed unnecessary warnings +// when connections were automatically disconnected or +// reconnected, and I just don't like Script Editor spew when +// nothing is actually wrong. +// +// All that I changed was to replace the catch() wrappers with +// less verbose isConnected() wrappers. +// +//=========================================================================== +proc myReplaceNode( string $originalNode, string $replaceNode ) +{ + // Copy the scalar values + + string $originalAttrs[] = + `listAttr -scalar -multi -read -visible $originalNode`; + + string $replaceAttrs[] = + `listAttr -scalar -multi -write -visible $replaceNode`; + + for ($attr in $originalAttrs) { + if (arrayMatch($replaceAttrs, $attr)) { + float $value = `getAttr ($originalNode+"."+$attr)`; + catch(`setAttr ($replaceNode+"."+$attr) $value`); + } + } + + string $connections[]; + + // Process the source connections + + $connections = `listConnections -source true -destination false + -connections true -plugs true $originalNode`; + + for ($i = 0; $i < size($connections); $i += 2) { + string $originalPlug = $connections[$i]; + string $srcPlug = $connections[$i+1]; + + string $replacePlug = + substitute($originalNode, $originalPlug, $replaceNode); + + catch(`connectAttr $srcPlug $replacePlug`); + } + + // Process the destination connections + + $connections = `listConnections -source false -destination true + -connections true -plugs true $originalNode`; + + for ($i = 0; $i < size($connections); $i += 2) { + string $originalPlug = $connections[$i]; + string $dstPlug = $connections[$i+1]; + + string $replacePlug = + substitute($originalNode, $originalPlug, $replaceNode); + + // First, break connections between original and dstPlug. + // Maya's 'replaceNode.mel' just wrapped this in a catch(), + // which spewed warnings if plug automatically disconnected + // due to a previous disconnect. + if ( `isConnected $originalPlug $dstPlug` ) + { + disconnectAttr $originalPlug $dstPlug; + } + + // Maya's 'replaceNode.mel' just wrapped this in a catch(), + // which spewed warnings if plug was automatically connected. + if ( !`isConnected $replacePlug $dstPlug` ) + { + connectAttr $replacePlug $dstPlug; + } + } +} + +//=========================================================================== +// replaceSimpleShaderWithLambert +//=========================================================================== +// Description: Replaces all pure3dSimpleShaders with Maya's lambert. +// +// Constraints: Attributes that map 1:1 are restored; anything else isn't. +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc replaceSimpleShaderWithLambert() +{ + string $ss[] = `ls -type "pure3dSimpleShader"`; + + for ( $shaderNode in $ss ) + { + string $alpha[] = `listConnections ( $shaderNode + ".transparency" )`; + + // This would be the desired Material type + string $replaceType = "lambert"; + + string $replaceWith = `createNode $replaceType`; + + myReplaceNode $shaderNode $replaceWith; + + delete $shaderNode; + + // Rename the new node to match the original. + rename $replaceWith $shaderNode; + } +} + +/* +source replaceSimpleShaderWithLambert; replaceSimpleShaderWithLambert; +*/ diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceTex.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceTex.mel new file mode 100644 index 0000000..19369cc --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/replaceTex.mel @@ -0,0 +1,38 @@ + +/* + | + | $Source: replaceTex.mel $ + | + | $Author: jschleifer $ + | $Revision: /main/1 $ + | $Date: 1997/11/06 10:46:33 $ + | + | Original Author: + | Jason Schleifer + | + | Description: + | Replaces strings in texture filenames. Works really well if you + | need to fix paths. + | + | Usage: + | replaceTex <old string> <new string> + | + | ex: + | + | replaceTex "/this/is/an/explicit/path" ""; + | +*/ + +global proc replaceTex (string $old, string $new) +{ + for ($item in `ls -type file`) + { + string $name = `getAttr ($item + ".fileTextureName")`; + $name = `substitute $old $name $new`; + print ("setAttr -type \"string\" " + $item + ".fileTextureName \"" + $name + "\";\n"); + $cmd = ("setAttr -type \"string\" " + $item + ".fileTextureName \"" + $name + "\";\n"); + + eval $cmd; + } + +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.mel new file mode 100644 index 0000000..7420382 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.mel @@ -0,0 +1,578 @@ +/* rndPoints V1.6 - Maya2.0 + +This script may be freely distributed. Modify at your own risk. + +Author: Dirk Bialluch (DirkBi@Software2000.de) + +Creation date: 21.12.98 +Last update: 15.10.00 + +Description: + Please refer to integrated help window. + +History: + V1.1 + NEW + -added lattice points and polygon vertices + V1.2 + NEW + -set world space axes + V1.3 + NEW + -store UI values + -transform mode added (world/object space) + -set intensity range + -use seed value checkbox added + -show min/max value + V1.4 + ENHANCED + -store UI values as soon as UI element changes + NEW + -randomize along normal, u & v tangent + V1.5 + FIXED + -"Use Seed Value" flag will now be recognized + NEW + -added threshold value for point randomization + V1.6 + CHANGED + -UI point count display removed, due to performance issues + ENHANCED + -poly vertices can now be randomized along the uv direction + NEW + -major UI update + -reset UI + -help window +*/ + +// +// Create UI ********************************************************************************** +// + +global proc rndPoints () +{ + // set select tool + global string $gSelect; + setToolTo $gSelect; + + int $uiLabelWidth = 140; + int $uiInputWidth = 240; + int $uiWidth = $uiLabelWidth + $uiInputWidth + 40; + + if (`window -exists rp_ui` == true) + deleteUI rp_ui; + + window + -maximizeButton 0 + -resizeToFitChildren 0 + -title "Randomize Points V1.6" + -iconName "Randomize Points" + -menuBar true + -menuBarVisible true + rp_ui; + menu + -label "Edit" + -tearOff false; + menuItem + -label "Reset Settings" + -c "rp_storeRecallUI reset; rndPoints"; + menu + -label "Help" + -tearOff 0; + menuItem + -label "Help with Randomize Points tool" + -c "rp_help 1"; + menuItem + -divider true; + menuItem + -label "Script Information" + -c "rp_help 2"; + + string $rp_form = `formLayout -numberOfDivisions 100`; + string $rp_scroll = `scrollLayout -hst 16 -vst 16 -childResizable true -minChildWidth $uiWidth`; + columnLayout -adjustableColumn true -rowSpacing 5; + frameLayout + -label "Settings" + -labelAlign "center" + -cll true + -lw $uiWidth + -mh 3 + -borderStyle "etchedIn" + -cc "rp_adjustUI nop" + -ec "rp_adjustUI nop" + -bv true + rp_sFrame; + columnLayout -adjustableColumn true; + rowLayout + -numberOfColumns 3 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text -l "Intensity"; + floatSliderGrp + -field true + -precision 4 + -value .1 + -minValue 0 + -maxValue 1 + -fieldMinValue 0 + -fieldMaxValue 10000 + -sliderStep .1 + -cc "rp_adjustUI nop" + -dc "rp_adjustUI nop" + rp_intensity; + text -l "WS"; + setParent ..; + rowLayout + -numberOfColumns 3 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text -l "Intensity Range"; + floatSliderGrp + -field true + -precision 4 + -value 0 + -minValue -100 + -maxValue 100 + -sliderStep 5 + -cc "rp_adjustUI nop" + -dc "rp_adjustUI nop" + rp_intensityRange; + text -l "-/+ %"; + setParent ..; + rowLayout + -numberOfColumns 4 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 ( $uiInputWidth / 2 ) + -columnWidth 3 ( $uiInputWidth / 2 ); + text -l "Min/Max Value"; + floatField + -w ( $uiInputWidth / 2 ) + -precision 4 + -editable false + rp_min; + floatField + -w ( $uiInputWidth / 2 ) + -precision 4 + -editable false + rp_max; + text -label "Info"; + setParent ..; + + separator -h 10; + + rowLayout + -numberOfColumns 3 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text -l "Threshold"; + floatSliderGrp + -field true + -precision 4 + -value 0 + -minValue 0 + -maxValue 1 + -sliderStep .1 + -cc "rp_adjustUI nop" + -dc "rp_adjustUI nop" + rp_threshold; + text -l "0-1"; + setParent ..; + + separator -h 10; + + rowLayout + -numberOfColumns 2 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text -label "Use Seed Value"; + checkBox + -label "" + -value true + -cc "rp_adjustUI nop" + rp_useSeed; + setParent ..; + rowLayout + -numberOfColumns 2 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text -l "Seed Value"; + intSliderGrp + -field true + -value 1234 + -minValue 0 + -maxValue 99999 + -cc "rp_adjustUI nop" + rp_seed; + setParent ..; + + separator -h 10; + + rowLayout + -numberOfColumns 2 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 $uiInputWidth; + text + -label "Transform Mode"; + radioButtonGrp + -numberOfRadioButtons 3 + -cw 1 100 + -cw 2 105 + -labelArray3 "World Space" "Object Space" "Distance" + -select 1 + -cc "rp_adjustUI nop" + rp_transMode; + setParent ..; + + separator -h 10; + + rowLayout + -numberOfColumns 4 + -cat 1 "right" 5 + -columnWidth 1 $uiLabelWidth + -columnWidth 2 50 + -columnWidth 3 50; + text -label "Enable Axes"; + checkBox + -label "X" + -value true + -cc "rp_adjustUI nop" + rp_x; + checkBox + -label "Y" + -value true + -cc "rp_adjustUI nop" + rp_y; + checkBox + -label "Z" + -value true + -cc "rp_adjustUI nop" + rp_z; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + + button + -label "Randomize Points" + -command "rp_main" + rp_execButton; + + button + -label "Close" + -command "deleteUI rp_ui" + rp_closeButton; + + // set form layouts + formLayout -edit + -attachForm $rp_scroll "top" 2 + -attachForm $rp_scroll "left" 2 + -attachControl $rp_scroll "bottom" 2 rp_execButton + -attachForm $rp_scroll "right" 2 + + -attachNone rp_execButton "top" + -attachForm rp_execButton "left" 2 + -attachForm rp_execButton "bottom" 2 + -attachPosition rp_execButton "right" 2 50 + + -attachNone rp_closeButton "top" + -attachPosition rp_closeButton "left" 2 50 + -attachForm rp_closeButton "bottom" 2 + -attachForm rp_closeButton "right" 2 + $rp_form; + + rp_storeRecallUI recall; + + // check UI settings after restoring values + rp_adjustUI nop; + + showWindow rp_ui; +} + +global proc rp_storeRecallUI ( string $mode ) +{ + string $floatFieldList[] = { + }; + + string $intFieldList[] = { + }; + + string $optionMenuList[] = { + }; + + string $floatSliderGrpList[] = { + "rp_intensity", + "rp_intensityRange", + "rp_threshold" + }; + + string $intSliderGrpList[] = { + "rp_seed" + }; + + string $checkBoxList[] = { + "rp_useSeed", + "rp_x", + "rp_y", + "rp_z" + }; + + string $radioButtonGrpList[] = { + "rp_transMode" + }; + + string $frameLayoutList[] = { + "rp_sFrame" + }; + + int $cnt; + + if ( $mode == "store" ) + { + for ( $cnt = 0; $cnt < size( $floatFieldList ); $cnt++ ) + optionVar -floatValue $floatFieldList[$cnt] `floatField -q -value $floatFieldList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $intFieldList ); $cnt++ ) + optionVar -intValue $intFieldList[$cnt] `intField -q -value $intFieldList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $floatSliderGrpList ); $cnt++ ) + optionVar -floatValue $floatSliderGrpList[$cnt] `floatSliderGrp -q -value $floatSliderGrpList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $intSliderGrpList ); $cnt++ ) + optionVar -intValue $intSliderGrpList[$cnt] `intSliderGrp -q -value $intSliderGrpList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $checkBoxList ); $cnt++ ) + optionVar -intValue $checkBoxList[$cnt] `checkBox -q -value $checkBoxList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $optionMenuList ); $cnt++ ) + optionVar -intValue $optionMenuList[$cnt] `optionMenu -q -select $optionMenuList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $radioButtonGrpList ); $cnt++ ) + optionVar -intValue $radioButtonGrpList[$cnt] `radioButtonGrp -q -select $radioButtonGrpList[$cnt]`; + + for ( $cnt = 0; $cnt < size( $frameLayoutList ); $cnt++ ) + optionVar -intValue $frameLayoutList[$cnt] `frameLayout -q -collapse $frameLayoutList[$cnt]`; + } + + if ( $mode == "recall" ) + { + for ( $cnt = 0; $cnt < size( $floatFieldList ); $cnt++ ) + if ( `optionVar -exists $floatFieldList[$cnt]` ) + floatField -e -value `optionVar -q $floatFieldList[$cnt]` $floatFieldList[$cnt]; + + for ( $cnt = 0; $cnt < size( $intFieldList ); $cnt++ ) + if ( `optionVar -exists $intFieldList[$cnt]` ) + intField -e -value `optionVar -q $intFieldList[$cnt]` $intFieldList[$cnt]; + + for ( $cnt = 0; $cnt < size( $floatSliderGrpList ); $cnt++ ) + if ( `optionVar -exists $floatSliderGrpList[$cnt]` ) + floatSliderGrp -e -value `optionVar -q $floatSliderGrpList[$cnt]` $floatSliderGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $intSliderGrpList ); $cnt++ ) + if ( `optionVar -exists $intSliderGrpList[$cnt]` ) + intSliderGrp -e -value `optionVar -q $intSliderGrpList[$cnt]` $intSliderGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $checkBoxList ); $cnt++ ) + if ( `optionVar -exists $checkBoxList[$cnt]` ) + checkBox -e -value `optionVar -q $checkBoxList[$cnt]` $checkBoxList[$cnt]; + + for ( $cnt = 0; $cnt < size( $optionMenuList ); $cnt++ ) + if ( `optionVar -exists $optionMenuList[$cnt]` ) + optionMenu -e -select `optionVar -q $optionMenuList[$cnt]` $optionMenuList[$cnt]; + + for ( $cnt = 0; $cnt < size( $radioButtonGrpList ); $cnt++ ) + if ( `optionVar -exists $radioButtonGrpList[$cnt]` ) + radioButtonGrp -e -select `optionVar -q $radioButtonGrpList[$cnt]` $radioButtonGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $frameLayoutList ); $cnt++ ) + if ( `optionVar -exists $frameLayoutList[$cnt]` ) + frameLayout -e -collapse `optionVar -q $frameLayoutList[$cnt]` $frameLayoutList[$cnt]; + } + + if ( $mode == "reset" ) + { + for ( $cnt = 0; $cnt < size( $floatFieldList ); $cnt++ ) + optionVar -remove $floatFieldList[$cnt]; + + for ( $cnt = 0; $cnt < size( $intFieldList ); $cnt++ ) + optionVar -remove $intFieldList[$cnt]; + + for ( $cnt = 0; $cnt < size( $floatSliderGrpList ); $cnt++ ) + optionVar -remove $floatSliderGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $intSliderGrpList ); $cnt++ ) + optionVar -remove $intSliderGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $checkBoxList ); $cnt++ ) + optionVar -remove $checkBoxList[$cnt]; + + for ( $cnt = 0; $cnt < size( $optionMenuList ); $cnt++ ) + optionVar -remove $optionMenuList[$cnt]; + + for ( $cnt = 0; $cnt < size( $radioButtonGrpList ); $cnt++ ) + optionVar -remove $radioButtonGrpList[$cnt]; + + for ( $cnt = 0; $cnt < size( $frameLayoutList ); $cnt++ ) + optionVar -remove $frameLayoutList[$cnt]; + } +} + +// +// Adjust UI settings +// + +global proc rp_adjustUI ( string $function ) +{ + if ( `checkBox -q -v rp_useSeed` ) + intSliderGrp -e -enable true rp_seed; + else + intSliderGrp -e -enable false rp_seed; + + if ( ( `checkBox -q -v rp_x` || `checkBox -q -v rp_y` || `checkBox -q -v rp_z` ) && `floatSliderGrp -q -value rp_intensity` ) + button -e -enable true rp_execButton; + else + button -e -enable false rp_execButton; + + if ( `radioButtonGrp -q -select rp_transMode` == 1 ) + floatSliderGrp -e -extraLabel "WS" rp_intensity; + else + floatSliderGrp -e -extraLabel "OS" rp_intensity; + + if ( `radioButtonGrp -q -select rp_transMode` == 3 ) + { + checkBox -e -label "U" rp_x; + checkBox -e -label "V" rp_y; + checkBox -e -label "N" rp_z; + } + else + { + checkBox -e -label "X" rp_x; + checkBox -e -label "Y" rp_y; + checkBox -e -label "Z" rp_z; + } + + // calculate min/max displacement value + float $intensity = `floatSliderGrp -q -value rp_intensity`; + float $intensityRange = `floatSliderGrp -q -value rp_intensityRange`; + + float $min = -($intensity / 2) + ($intensity * $intensityRange / 200); + float $max = $intensity / 2 + ($intensity * $intensityRange / 200); + + floatField -e -value $min rp_min; + floatField -e -value $max rp_max; + + rp_storeRecallUI store; +} + + +// +// Main function +// + +global proc rp_main () +{ + // get settings from UI + float $min = `floatField -q -value rp_min`; + float $max = `floatField -q -value rp_max`; + int $seed = `intSliderGrp -q -value rp_seed`; + int $useSeed = `checkBox -q -v rp_useSeed`; + int $enX = `checkBox -q -v rp_x`; + int $enY = `checkBox -q -v rp_y`; + int $enZ = `checkBox -q -v rp_z`; + int $transMode = `radioButtonGrp -q -select rp_transMode`; + float $threshold = `floatSliderGrp -q -value rp_threshold`; + + // init random function for repeatable results + if ( $useSeed ) + seed $seed; + + string $objList[]; + + // get selected points + if ( $transMode != 3 ) + // filter cv, poly vertices and lattice points + $objList = `filterExpand -ex true -sm 28 -sm 31 -sm 46`; + else + // filter cv and poly vertices + $objList = `filterExpand -ex true -sm 28 -sm 31`; + + int $listSize = size($objList); + + waitCursor -state on; + + // transform CV + float $xmin, $ymin, $zmin, $xmax, $ymax, $zmax; + int $count; + string $u = ""; + string $v = ""; + string $n = ""; + + int $threshArray[] = {}; + + for ($count = 0; $count < $listSize; $count++) + { + float $threshRnd = `rand 0 1`; + + if ( $threshRnd >= $threshold ) + { + $threshArray[$count] = 1; + + $xmin = $ymin = $zmin = $xmax = $ymax = $zmax = 0; + if ($enX) + { + $xmin = $min; + $xmax = $max; + } + if ($enY) + { + $ymin = $min; + $ymax = $max; + } + if ($enZ) + { + $zmin = $min; + $zmax = $max; + } + + if ( $transMode == 1 ) + move -r -ws `rand $xmin $xmax` `rand $ymin $ymax` `rand $zmin $zmax` $objList[$count]; + else if ( $transMode == 2 ) + move -r -os `rand $xmin $xmax` `rand $ymin $ymax` `rand $zmin $zmax` $objList[$count]; + else + { + $u += "-u " + ( `rand $xmin $xmax` ) + " "; + $v += "-v " + ( `rand $ymin $ymax` ) + " "; + $n += "-n " + ( `rand $zmin $zmax` ) + " "; + } + } + } + + if ( $transMode == 3) + { + string $pointList = ""; + + for ( $cnt = 0; $cnt < size ( $threshArray ); $cnt++ ) + { + if ( $threshArray[$cnt] ) + $pointList += ( $objList[$cnt] + " " ); + } + + if ( size ( $pointList ) ) + { + eval ( "moveVertexAlongDirection " + $n + $pointList ); + eval ( "moveVertexAlongDirection " + $u + $pointList ); + eval ( "moveVertexAlongDirection " + $v + $pointList ); + } + } + + waitCursor -state off; +} + +// end of script diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.xpm b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.xpm new file mode 100644 index 0000000..c8b61b6 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rndPoints.xpm @@ -0,0 +1,828 @@ +/* XPM */ +static char *RNDPTS_xpm[]={ +"32 32 793 2", +" c #22651C", +" 0 c #508427", +" 1 c #5A8E2B", +" 2 c #598D2C", +" 3 c #5B902E", +" 4 c #5A8F2F", +" 5 c #5A8E30", +" 6 c #52882B", +" 7 c #2E7722", +" 8 c #226F20", +" 9 c #226E20", +" a c #58882F", +" b c #5A852B", +" c c #4F7B25", +" d c #567D26", +" e c #557B25", +" f c #527824", +" g c #507522", +" h c #37681C", +" i c #1C5C1B", +" j c #1C5A1A", +" k c #366921", +" l c #4E6E1E", +" m c #4D6C1D", +" n c #4C6B1C", +" o c #4B6A1B", +" p c #4A691A", +" q c #49671A", +" r c #426418", +" s c #205617", +" t c #195317", +" u c #185217", +" v c #41751D", +" w c #F3CB55", +" x c #FED863", +" y c #FFE36E", +" z c #FFF581", +" A c #FFFE8E", +" B c #FFFF9B", +" C c #FFFF9C", +" D c #E5E37C", +" E c #64892B", +" F c #20691F", +" G c #D7CC5B", +" H c #FFE575", +" I c #F9D365", +" J c #F0CA5D", +" K c #E3BD51", +" L c #D7B347", +" M c #D1AD42", +" N c #C6A439", +" O c #878423", +" P c #1F5919", +" Q c #9BAD4F", +" R c #BA9C39", +" S c #AF8E29", +" T c #AB8B27", +" U c #A78824", +" V c #A38522", +" W c #A18220", +" X c #9E801F", +" Y c #907B1B", +" Z c #446013", +" & c #185117", +"0 c #40771D", +"00 c #ECC44E", +"01 c #F8CF59", +"02 c #DDBD51", +"03 c #D9C259", +"04 c #D9CA60", +"05 c #D9CF67", +"06 c #E5E076", +"07 c #FFFB8B", +"08 c #E3D863", +"09 c #3C701E", +"0a c #D4C250", +"0b c #FEDB6B", +"0c c #F1CC5E", +"0d c #CBAE44", +"0e c #C2A53D", +"0f c #BB9E37", +"0g c #BA9B36", +"0h c #C7A43A", +"0i c #C19F36", +"0j c #606F19", +"0k c #A8B456", +"0l c #B99C3A", +"0m c #AE8E29", +"0n c #97801E", +"0o c #9A831D", +"0p c #98821C", +"0q c #96801B", +"0r c #A08321", +"0s c #9C7F1D", +"0t c #947B18", +"0u c #1F4811", +"0v c #3E721C", +"0w c #E2BB46", +"0x c #EEC651", +"0y c #B39721", +"0z c #6F630F", +"0A c #6A5E0F", +"0B c #968326", +"0C c #FFEA77", +"0D c #F2DB6A", +"0E c #687514", +"0F c #CCB449", +"0G c #F7D162", +"0H c #B69C34", +"0I c #74670F", +"0J c #685C0F", +"0K c #675C0E", +"0L c #7D6D14", +"0M c #CBAC3E", +"0N c #BF9D34", +"0O c #6F6515", +"0P c #9A9A3C", +"0Q c #B99C35", +"0R c #AE8E28", +"0S c #6A600B", +"0T c #63590D", +"0U c #5F560C", +"0V c #6F620D", +"0W c #D3BF67", +"0X c #9F8321", +"0Y c #9A7D1C", +"0Z c #253207", +"0& c #3B6E1C", +"1 c #DBB641", +"10 c #E6BF4A", +"11 c #E1BC45", +"12 c #D8B849", +"13 c #D7B84D", +"14 c #D9BB51", +"15 c #F6D35E", +"16 c #FEDA67", +"17 c #D9B94C", +"18 c #615E0D", +"19 c #C9AD42", +"1a c #ECC758", +"1b c #B59B2E", +"1c c #0D1D07", +"1d c #081907", +"1e c #1B280B", +"1f c #D8B549", +"1g c #BD9C33", +"1h c #736716", +"1i c #959535", +"1j c #B89B32", +"1k c #AD8E27", +"1l c #3A3F08", +"1m c #081B08", +"1n c #122308", +"1o c #E9D97D", +"1p c #9F8323", +"1q c #9A7E1B", +"1r c #243107", +"1s c #39691B", +"1t c #D5B03C", +"1u c #DFB943", +"1v c #E4BE49", +"1w c #E9C34E", +"1x c #EDC753", +"1y c #EEC854", +"1z c #F3CD5A", +"1A c #F3CD5B", +"1B c #C9AB37", +"1C c #303809", +"1D c #C3A73B", +"1E c #E4C050", +"1F c #B1972B", +"1G c #0C1D07", +"1H c #081908", +"1I c #0D2B0D", +"1J c #20320E", +"1K c #D6B047", +"1L c #BC9B31", +"1M c #726615", +"1N c #959434", +"1O c #B79B31", +"1P c #AC8D26", +"1Q c #393E08", +"1R c #16290A", +"1S c #F9E47A", +"1T c #9F8322", +"1U c #233107", +"1V c #38661A", +"1W c #D1AC38", +"1X c #D9B43E", +"1Y c #A68C24", +"1Z c #917B1D", +"1& c #927C1D", +"2 c #8B771B", +"20 c #A88E2F", +"21 c #E8C350", +"22 c #DDBA48", +"23 c #48490D", +"24 c #BBA237", +"25 c #DCB949", +"26 c #AC9228", +"27 c #0C1C07", +"28 c #103310", +"29 c #194D18", +"2a c #2B5719", +"2b c #D1AD40", +"2c c #BA9A2F", +"2d c #706515", +"2e c #938C33", +"2f c #B6982F", +"2g c #AB8D25", +"2h c #383D08", +"2i c #081A08", +"2j c #1B340E", +"2k c #FAE470", +"2l c #233007", +"2m c #386519", +"2n c #CCA934", +"2o c #D4AF39", +"2p c #AF951E", +"2q c #1F2C09", +"2r c #081A07", +"2s c #524F13", +"2t c #DEBB48", +"2u c #D7B443", +"2v c #6D650E", +"2w c #B59C37", +"2x c #D4B242", +"2y c #A88F25", +"2z c #0F2E0E", +"2A c #184917", +"2B c #2A5318", +"2C c #CDAB3B", +"2D c #B8982D", +"2E c #6D6213", +"2F c #948732", +"2G c #B5962E", +"2H c #AA8C24", +"2I c #5D5917", +"2J c #5C5816", +"2K c #636317", +"2L c #C7B04A", +"2M c #9C801B", +"2N c #967B19", +"2O c #192807", +"2P c #396418", +"2Q c #C9A631", +"2R c #CFAB36", +"2S c #AF931E", +"2T c #4F4F12", +"2U c #D7B441", +"2V c #D0AE3D", +"2W c #6C630E", +"2X c #B19636", +"2Y c #CEAD3D", +"2Z c #A48B23", +"2& c #0C1B07", +"3 c #0C250B", +"30 c #174716", +"31 c #295018", +"32 c #C9A837", +"33 c #B5962B", +"34 c #6B6012", +"35 c #93832F", +"36 c #B3942C", +"37 c #A98B23", +"38 c #A78921", +"39 c #A48720", +"3a c #A1841E", +"3b c #9F831D", +"3c c #9D811C", +"3d c #665B0E", +"3e c #081C08", +"3f c #2A5B1A", +"3g c #A48929", +"3h c #A88D29", +"3i c #A18A18", +"3j c #22350C", +"3k c #0D290C", +"3l c #0E2E0E", +"3m c #3E4715", +"3n c #AB902F", +"3o c #AA9229", +"3p c #655D0D", +"3q c #8F7B27", +"3r c #A9912B", +"3s c #927E1A", +"3t c #111F07", +"3u c #0B210A", +"3v c #164415", +"3w c #214915", +"3x c #AE9529", +"3y c #9D8720", +"3z c #635C0F", +"3A c #7A6F1B", +"3B c #9C861F", +"3C c #96821A", +"3D c #958119", +"3E c #938017", +"3F c #927F16", +"3G c #907F15", +"3H c #827411", +"3I c #55510B", +"3J c #0F2008", +"3K c #1A5519", +"3L c #102108", +"3M c #283109", +"3N c #293109", +"3O c #194F18", +"3P c #195018", +"3Q c #222E09", +"3R c #2A3109", +"3S c #55290A", +"3T c #343615", +"3U c #2B3109", +"3V c #272E09", +"3W c #071707", +"3X c #0C240B", +"3Y c #164115", +"3Z c #154015", +"3& c #2C3D0E", +"4 c #152108", +"40 c #142108", +"41 c #262E08", +"42 c #262F08", +"43 c #252F08", +"44 c #263008", +"45 c #112108", +"46 c #174A15", +"47 c #154414", +"48 c #194E17", +"49 c #184C17", +"4a c #184A17", +"4b c #394726", +"4c c #4A2F16", +"4d c #D45629", +"4e c #914C1D", +"4f c #0E1C0A", +"4g c #3D371C", +"4h c #3B401D", +"4i c #153E14", +"4j c #133912", +"4k c #081808", +"4l c #071807", +"4m c #081807", +"4n c #195318", +"4o c #184D17", +"4p c #184B17", +"4q c #174917", +"4r c #174816", +"4s c #DD9762", +"4t c #E98A54", +"4u c #6B4E22", +"4v c #604F22", +"4w c #544D22", +"4x c #43411C", +"4y c #C66232", +"4z c #C5602F", +"4A c #1A3F15", +"4B c #143C14", +"4C c #2A4419", +"4D c #614F25", +"4E c #1D1F0B", +"4F c #222B0F", +"4G c #1F220C", +"4H c #171F0A", +"4I c #101D09", +"4J c #195118", +"4K c #0C260B", +"4L c #0F300E", +"4M c #174916", +"4N c #6E8C5A", +"4O c #688054", +"4P c #7E5B28", +"4Q c #835726", +"4R c #585225", +"4S c #554E23", +"4T c #5F582B", +"4U c #BDA46C", +"4V c #A37542", +"4W c #695123", +"4X c #515524", +"4Y c #4D5424", +"4Z c #7F5626", +"4& c #DF6430", +"5 c #523915", +"50 c #273515", +"51 c #1F3012", +"52 c #AE5424", +"53 c #F46A30", +"54 c #303714", +"55 c #192A0F", +"56 c #16280E", +"57 c #92481C", +"58 c #F9672B", +"59 c #413713", +"5a c #0E2D0D", +"5b c #184F17", +"5c c #174A16", +"5d c #234C1B", +"5e c #E18C6A", +"5f c #DF7756", +"5g c #6D6331", +"5h c #626632", +"5i c #5D602C", +"5j c #565226", +"5k c #694E25", +"5l c #C25C32", +"5m c #8D4520", +"5n c #4E4B22", +"5o c #4F4C22", +"5p c #605D2B", +"5q c #846B36", +"5r c #80602C", +"5s c #615E2A", +"5t c #5F612B", +"5u c #61622C", +"5v c #885D28", +"5w c #985824", +"5x c #5F612A", +"5y c #5E6029", +"5z c #5D5F28", +"5A c #9C5622", +"5B c #AF3810", +"5C c #204012", +"5D c #144113", +"5E c #184D16", +"5F c #174C16", +"5G c #174B16", +"5H c #164515", +"5I c #5C421B", +"5J c #54280B", +"5K c #626737", +"5L c #626736", +"5M c #5E6231", +"5N c #777450", +"5O c #7D7956", +"5P c #5D4A22", +"5Q c #584A22", +"5R c #4F4A22", +"5S c #514C23", +"5T c #925C30", +"5U c #EF8A52", +"5V c #82592B", +"5W c #60612D", +"5X c #63642E", +"5Y c #946931", +"5Z c #FA7E40", +"5& c #8F612C", +"6 c #61632B", +"60 c #60622A", +"61 c #5D6029", +"62 c #EA6129", +"63 c #E5662B", +"64 c #144013", +"65 c #164715", +"66 c #224718", +"67 c #4C5326", +"68 c #51572A", +"69 c #565B2D", +"6a c #575C2F", +"6b c #575C2E", +"6c c #CC8C79", +"6d c #ECB5A4", +"6e c #633C1A", +"6f c #504A24", +"6g c #534E26", +"6h c #565128", +"6i c #645128", +"6j c #874D24", +"6k c #705D2D", +"6l c #646230", +"6m c #666330", +"6n c #895C2A", +"6o c #AF4F21", +"6p c #7A602B", +"6q c #64652E", +"6r c #62642C", +"6s c #67612A", +"6t c #A44519", +"6u c #9A320C", +"6v c #133F12", +"6w c #50733D", +"6x c #CCD59D", +"6y c #836B42", +"6z c #40481F", +"6A c #454C22", +"6B c #484E24", +"6C c #4C5126", +"6D c #505529", +"6E c #563C1C", +"6F c #661F08", +"6G c #393217", +"6H c #4F4A26", +"6I c #56512B", +"6J c #887E4F", +"6K c #C2A870", +"6L c #7C6B3F", +"6M c #686136", +"6N c #6D6739", +"6O c #76683A", +"6P c #98733F", +"6Q c #7E713A", +"6R c #6B6D36", +"6S c #696B34", +"6T c #666831", +"6U c #6E6830", +"6V c #90642C", +"6W c #3F4718", +"6X c #133E12", +"6Y c #164915", +"6Z c #164815", +"6& c #164615", +"7 c #72491E", +"70 c #D36844", +"71 c #8B3916", +"72 c #3E451D", +"73 c #3E451E", +"74 c #40471F", +"75 c #414720", +"76 c #454A21", +"77 c #454421", +"78 c #3C391B", +"79 c #413D1E", +"7a c #4F4927", +"7b c #57512E", +"7c c #9D5530", +"7d c #D67447", +"7e c #754E2C", +"7f c #7A744A", +"7g c #827A50", +"7h c #957548", +"7i c #F27F46", +"7j c #C16D3A", +"7k c #757744", +"7l c #767843", +"7m c #71733D", +"7n c #916531", +"7o c #F3632B", +"7p c #BF5D27", +"7q c #183F13", +"7r c #29260B", +"7s c #373413", +"7t c #3D441C", +"7u c #3D441D", +"7v c #75795D", +"7w c #B0B0A2", +"7x c #5A5337", +"7y c #3F3B1C", +"7z c #443F1F", +"7A c #4B4625", +"7B c #55502D", +"7C c #5B5230", +"7D c #634A2B", +"7E c #7C724A", +"7F c #837C54", +"7G c #898359", +"7H c #977C52", +"7I c #893F1F", +"7J c #804F2D", +"7K c #807D51", +"7L c #828451", +"7M c #7D804C", +"7N c #806436", +"7O c #9F3D18", +"7P c #69350D", +"7Q c #164614", +"7R c #154514", +"7S c #314218", +"7T c #2C3614", +"7U c #3A421B", +"7V c #3C431C", +"7W c #3C441C", +"7X c #AB6A52", +"7Y c #E8ADA1", +"7Z c #6B371D", +"7& c #3C391A", +"8 c #403C1D", +"80 c #464221", +"81 c #4F4A28", +"82 c #595330", +"83 c #645E38", +"84 c #6E6741", +"85 c #77714A", +"86 c #7F7850", +"87 c #827C53", +"88 c #847E54", +"89 c #827C52", +"8a c #7F7950", +"8b c #7D794D", +"8c c #7B7D4B", +"8d c #595D35", +"8e c #0D2C0D", +"8f c #113810", +"8g c #164714", +"8h c #918E53", +"8i c #6D733F", +"8j c #3A431A", +"8k c #3B431B", +"8l c #3B431C", +"8m c #3D431C", +"8n c #2F2E11", +"8o c #461B06", +"8p c #2D220D", +"8q c #3D391B", +"8r c #413D1D", +"8s c #474221", +"8t c #ABA88F", +"8u c #BEBC96", +"8v c #685C37", +"8w c #605A34", +"8x c #67613B", +"8y c #6D6740", +"8z c #716B43", +"8A c #736D45", +"8B c #756F47", +"8C c #767048", +"8D c #757047", +"8E c #746E45", +"8F c #716C43", +"8G c #595A34", +"8H c #0A2009", +"8I c #10330F", +"8J c #3C4F1D", +"8K c #EB935C", +"8L c #DA6B3C", +"8M c #3F3E17", +"8N c #3B431A", +"8O c #3C421C", +"8P c #303215", +"8Q c #2A2811", +"8R c #3E3A1B", +"8S c #423E1E", +"8T c #BB6D53", +"8U c #E49F7D", +"8V c #5F4624", +"8W c #5C5631", +"8X c #645E37", +"8Y c #CF9860", +"8Z c #DE995E", +"8& c #74623A", +"9 c #6B653E", +"90 c #6B663E", +"91 c #6B653D", +"92 c #68633B", +"93 c #8B6034", +"94 c #2F290F", +"95 c #154614", +"96 c #513A0F", +"97 c #6A380E", +"98 c #174214", +"99 c #214216", +"9a c #304218", +"9b c #39431B", +"9c c #616646", +"9d c #6E7255", +"9e c #4A502B", +"9f c #3E431D", +"9g c #3D3C1B", +"9h c #423E1D", +"9i c #464220", +"9j c #473719", +"9k c #48250D", +"9l c #59532D", +"9m c #5D5730", +"9n c #605A33", +"9o c #C8461F", +"9p c #DC6333", +"9q c #5D502D", +"9r c #666139", +"9s c #726037", +"9t c #FB7338", +"9u c #FF7538", +"9v c #1F240C", +"9w c #144313", +"9x c #144213", +"9y c #163F13", +"9z c #B6A08E", +"9A c #FBF1EF", +"9B c #874F30", +"9C c #3F451D", +"9D c #3F421D", +"9E c #403C1C", +"9F c #433F1E", +"9G c #474220", +"9H c #4C4723", +"9I c #4F4A25", +"9J c #534D28", +"9K c #56502A", +"9L c #59542D", +"9M c #5C562F", +"9N c #4E4423", +"9O c #493317", +"9P c #5D5832", +"9Q c #625C35", +"9R c #625D35", +"9S c #73542D", +"9T c #A52807", +"9U c #C5350F", +"9V c #101F09", +"9W c #081D08", +"9X c #133E13", +"9Y c #4F350D", +"9Z c #98310F", +"9& c #443910", +"a c #223E16", +"a0 c #333C19", +"a1 c #6A664A", +"a2 c #565130", +"a3 c #4E4924", +"a4 c #514C26", +"a5 c #544E29", +"a6 c #57512B", +"a7 c #59532C", +"a8 c #5A552E", +"a9 c #5E5931", +"aa c #5E5932", +"ab c #4D4A27", +"ac c #1D1F09", +"ad c #144413", +"ae c #143F13", +"af c #133D12", +"ag c #133C12", +"ah c #133B12", +"ai c #0B1B09", +"aj c #2C341E", +"ak c #FFFFFF", +"al c #F3E4D9", +"am c #534622", +"an c #504A25", +"ao c #534D27", +"ap c #554F29", +"aq c #56512A", +"ar c #58522B", +"as c #59542C", +"at c #5A552D", +"au c #5B562E", +"av c #5C572F", +"aw c #5B562F", +"ax c #13230D", +"ay c #091D08", +"az c #154413", +"aA c #131A07", +"aB c #A22F13", +"aC c #AA3E23", +"aD c #19250E", +"aE c #2E3317", +"aF c #434220", +"aG c #534E27", +"aH c #7A683C", +"aI c #BF935C", +"aJ c #866C3E", +"aK c #58532B", +"aL c #58532C", +"aM c #59552D", +"aN c #17270F", +"aO c #092009", +"aP c #0E2C0D", +"aQ c #0D1D09", +"aR c #8E6038", +"aS c #F5A266", +"aT c #B87948", +"aU c #514D27", +"aV c #57522A", +"aW c #57532B", +"aX c #5C542B", +"aY c #1C2A11", +"aZ c #091E08", +"a& c #134012", +"b c #0C280B", +"b0 c #311D07", +"b1 c #832205", +"b2 c #5B2006", +"b3 c #0B1D09", +"b4 c #19270F", +"b5 c #2A3316", +"b6 c #3D401F", +"b7 c #4E4C26", +"b8 c #C66D36", +"b9 c #E06E35", +"ba c #8B4D22", +"bb c #144513", +"bc c #0E2E0D", +"bd c #D04E1D", +"be c #F0652D", +"bf c #9F5023", +"bg c #144112", +"bh c #134112", +"bi c #123D11", +"bj c #0C280C", +"bk c #0D2B0C", +"bl c #4C2307", +"bm c #852606", +"bn c #3E2207", +" 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u", +" v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &", +"0 000102030405060708090a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u", +"0v0w0x0y0z0A0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z", +"0&1 101112131415161718191a1b1c1d1d1e1f1g1h1i1j1k1l1m1m1n1o1p1q1r", +"1s1t1u1v1w1x1y1z1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1m1m1R1S1T1q1U", +"1V1W1X1Y1Z1&2 202122232425262728292a2b2c2d2e2f2g2h2i1m2j2k0X1q2l", +"2m2n2o2p2q2i2r2s2t2u2v2w2x2y272z2A2B2C2D2E2F2G2H0O2I2J2K2L2M2N2O", +"2P2Q2R2S2q2r1d2T2U2V2W2X2Y2Z2&3 303132333435363738393a3b3c2M3d3e", +"3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3e", +"3K3L3M3N3O3P3O293Q3R3S3T3U3V3W3X3Y3Z3&3V4 40414142434344451m1m3e", +"461m2i2i4748494a4b4c4d4e4f3W4g4h4i4i4j4k3W3W4l4l4m1d1d2r2i1m1m3e", +"4n1m2i2r4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E3W3W4F4G1d1d1d4H4I1m3e", +"4J4K1I4L4p4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4&5 505152535455565758595a", +"5b4o495c4M5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5A5B5C5D", +"5E5F5G4r4r5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W5X5Y5Z5&6 606162636464", +"5G5c4M655H666768696a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v64", +"5c4M656w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6v", +"6Y6Z6&7 707172737475767778797a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p6X6v", +"6Z656&7q7r7s7t7u727v7w7x7y7z7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P6X6v", +"6Z7Q7R7S7T7U7V7W7u7X7Y7Z7&8 80818283848586878887898a8b8c8d8e8f6X", +"8g8h8i8j8k8k8l7V8m8n8o8p8q8r8s8t8u8v8w8x8y8z8A8B8C8D8E8F8G1m8H8I", +"8J8K8L8M8N8k8k7V7t8O8P8Q8R8S8s8T8U8V8W8w8X8Y8Z8&9 90919293943e3e", +"95969798999a9b9c9d9e9f9g8R9h9i9j9k7a9l9m9n9o9p9q9r9r9r9s9t9u9v3e", +"7R479w9x5D649y9z9A9B9C9D9E9F9G9H9I9J9K9L9M9N9O9P9Q9R9R9S9T9U9V9W", +"7R479w9x5D649X9Y9Z9&a a09E9Fa1a2a3a4a5a6a7a89M9ma9aaaaa9abac3e9W", +"7Rad9w9x5Dae6v6Xafagah5aaiajakalamanaoapaqarasatauauavawauax9Way", +"az9w9w9x5D646v6Xafagag8I1daAaBaCaDaEaFaGaHaIaJaKaL9L9LaMasaNayaO", +"ad9w9w9x5D646v6XafafagaP2r2r2r2r2r2r2raQaRaSaTaUaqaVaWaWaXaYayaZ", +"adad9w9x5Da&6v6v6Xafafb 2i2i2i2i2i2i2i2ib0b1b2b3b4b5b6b7b8b9baaZ", +"bbad9w9x5Da&a&6v6X6Xafbc1m1m1m1m1m1m1m1m1m1m1m3e3e3e9WaybdbebfaZ", +"bbad9w9xbgbha&6v6vbibjbk3e1m1may1m1m1m1m3e3e3e9W9WayaZaZblbmbnaO"}; diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rp_help.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rp_help.mel new file mode 100644 index 0000000..3f8bd46 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/rp_help.mel @@ -0,0 +1,184 @@ +/* rpts_help.mel + +This script may be freely distributed. Modify at your own risk. + +Author: Dirk Bialluch (DirkBi@Software2000.de) + +Creation date: 15.10.2000 +Last update: 15.10.2000 + +*/ + +// +// Create UI +// + +global proc rp_help ( int $function ) +{ + int $uiLabelWidth = 150; + int $uiInputWidth = 80; + int $uiWidth = $uiLabelWidth + $uiInputWidth + 220; + + if ( `window -exists rp_help` ) + deleteUI rp_help; + + window + -maximizeButton false + -resizeToFitChildren false + -title "Randomize Points Help" + -iconName "Ranomdize Points Help" rp_help; + + tabLayout -innerMarginWidth 5 -innerMarginHeight 5 -childResizable true rp_helpTab; + string $rp1_form = `formLayout -numberOfDivisions 100 "Randomize Points"`; + string $rp1_scroll = `scrollLayout -hst 16 -vst 16 -childResizable true -minChildWidth $uiWidth`; + columnLayout -adjustableColumn true -rowSpacing 6; +// randomize points - instructions + frameLayout + -label "Instructions" + -labelAlign "center" + -cll false + -lw $uiWidth + -mh 3 + -borderStyle "etchedIn" + -bv true; + columnLayout -adjustableColumn true; + rowLayout + -numberOfColumns 1 + -cat 1 "left" 5; + text rp1_instructions; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + + string $rp1_button = `button + -label "Close" + -command "deleteUI rp_help"`; + setParent ..; + + string $rp2_form = `formLayout -numberOfDivisions 100 "About"`; + string $rp2_scroll = `scrollLayout -hst 16 -vst 16 -childResizable true -minChildWidth $uiWidth`; + columnLayout -adjustableColumn true -rowSpacing 6; +// about + frameLayout + -label "About Randomize Points" + -labelAlign "center" + -cll false + -lw $uiWidth + -mh 3 + -borderStyle "etchedIn" + -bv true; + columnLayout -adjustableColumn true; + rowLayout + -numberOfColumns 1 + -cat 1 "left" 5; + text rp2_instructions; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + + string $rp2_button = `button + -label "Close" + -command "deleteUI rp_help"`; + + // set form layouts + formLayout -edit + -attachForm $rp1_scroll "top" 4 + -attachForm $rp1_scroll "left" 4 + -attachControl $rp1_scroll "bottom" 4 $rp1_button + -attachForm $rp1_scroll "right" 4 + $rp1_form; + + formLayout -edit + -attachNone $rp1_button "top" + -attachForm $rp1_button "left" 4 + -attachForm $rp1_button "bottom" 4 + -attachForm $rp1_button "right" 4 + $rp1_form; + + formLayout -edit + -attachForm $rp2_scroll "top" 4 + -attachForm $rp2_scroll "left" 4 + -attachControl $rp2_scroll "bottom" 4 $rp2_button + -attachForm $rp2_scroll "right" 4 + $rp2_form; + + formLayout -edit + -attachNone $rp2_button "top" + -attachForm $rp2_button "left" 4 + -attachForm $rp2_button "bottom" 4 + -attachForm $rp2_button "right" 4 + $rp2_form; +/* + Enable Axes + Enable/disable the world space, object space or distance axes depending on the Transform + Mode settings. +*/ + string $rp1_instructions = + "This tool randomizes the position of selected CV´s, Poly Vertices and Lattice Points.\n" + + "\n" + + "Workflow tips\n" + + " To avoid problems at object poles when deforming eg a nurbs sphere, better bind\n" + + " the object to a lattice and randomize the lattice points instead.\n" + + "\n" + + "Intensity\n" + + " The Intensity value is measured in world or object space units depending on the.\n" + + " chosen Transform Mode. A value of 1 will displace the selected points within a\n" + + " maximum range of -0.5 to 0.5, if Intensity Range is set to 0. If you are using the\n" + + " object space mode, object scale values are taken into account.\n" + + "\n" + + "Intensity Range\n" + + " Shift the displacement toward the positive or negative value range. If Intensity is\n" + + " set to 2, an Intensity Range of 100% will shift the displacement completely to a\n" + + " positive range from 0 to 2. Setting the value to -100% would result in a range from\n" + + " -2 to 0.\n" + + "\n" + + "Min/Max Value\n" + + " These values show the final displacement range.\n" + + "\n" + + "Threshold\n" + + " Increase the Threshold value to leave a certain amount of points unaffected. When\n" + + " leaving this value at 0, all points will be affected. A value of 0.8 will skip\n" + + " approximately 80% of all selected points and randomize the remaining 20%.\n" + + "\n" + + "Use Seed Value\n" + + " Enable/disable the usage of a seed value for the randomize function.\n" + + "\n" + + "Seed\n" + + " The Seed value inits the randomize function, so the deformation is repeatable.\n" + + " The function will only produce identical results, if the points are always selected\n" + + " in the same order.\n" + + "\n" + + "Transform Mode\n" + + " World Space will displace points along the enabled world space axes.\n" + + " Object Space will displace points along the enabled object space axes.\n" + + " Distance will displace points along the enabled normal, u and v tangent.\n" + + " Lattice points are not affected by this transform node, because they do not have\n" + + " UVN properties.\n" + + "\n" + + "Enable Axes\n" + + " Enable/disable the axes depending on the Transform Mode settings.\n"; + + string $rp2_instructions = + "Randomize Points V1.6\n" + + "\n" + + "Programmed by Dirk Bialluch, 1998-2000\n" + + "\n" + + "This script may be freely distributed.\n" + + "Modify at your own risk.\n" + + "\n" + + "Email: 'DirkBi@Software2000.de'\n" + + "Homepage: 'http://dirk-bialluch.mayaring.com'"; + + text -e -label $rp1_instructions rp1_instructions; + text -e -label $rp2_instructions rp2_instructions; + + tabLayout -e -selectTabIndex $function rp_helpTab; + + showWindow rp_help; +} + +// end of script diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/searchReplaceWin.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/searchReplaceWin.mel new file mode 100644 index 0000000..2bf7f1f --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/searchReplaceWin.mel @@ -0,0 +1,87 @@ +// +// Copyright (C) 1997-2001 Alias|Wavefront, +// a division of Silicon Graphics Limited. +// +// The information in this file is provided for the exclusive use of the +// licensees of Alias|Wavefront. Such users have the right to use, modify, +// and incorporate this code into other products for purposes authorized +// by the Alias|Wavefront license agreement, without fee. +// +// ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +// EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR +// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. +// +// Alias|Wavefront Script File +// MODIFY THIS AT YOUR OWN RISK +/// +// +// +// searchReplaceWin.mel +// CPAM June 4, 1999 +// revised July 2001 +// +// +// This will search and replace object +// names for selected objects. Suggest +// using on a skeleton after copying +// an arm or leg. +// + + +global proc searchReplace (){ + + global string $searchText; + global string $replaceText; + global string $objects[]; + + $objects = `ls -sl`; + $searchText = `textField -q -text searchText`; + $replaceText = `textField -q -text replaceText`; + + for ($object in $objects){ + + string $newName = `substitute $searchText $object $replaceText`; + print "Object: "; + print $object; + print " New name: "; + print $newName; + print "\n"; + rename $object $newName; + } + +} + + +global proc searchReplaceWin (){ + + window -title "Object Renamer" + objectRenamer; + columnLayout; + + text "Search Text:"; + textField -w 200 + -text "right" + searchText; + + text "Replace Text:"; + textField -w 200 + -text "left" + replaceText; + + button -label "Search and Replace!" + -command "searchReplace" + doIt; + + showWindow objectRenamer; + +} + + + + + + diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/selectInst.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/selectInst.mel new file mode 100644 index 0000000..3e01da5 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/selectInst.mel @@ -0,0 +1,36 @@ +global proc selectInst() +{ + string $orig[]; + clear($orig); + $orig = `ls -sl -tr`; + string $origShape[]; + clear($origShape); + $origShape = `ls -sl -dag -lf`; + string $token[]; + clear($token); + int $numTok; + $numTok = `tokenize $origShape[0] "|" $token`; + string $select[]; + clear($select); + int $index; + int $count; + $count = 0; +// if(`strcmp $orig[0] $token[0]`!=0) +// { error "No Original Geometry Selected!!";} +// else +// { + string $objects[]= `ls -tr`; + for($object in $objects) + { + string $objShape[] = `ls -dag -lf $object`; + if(`strcmp $origShape[0] $objShape[0]` == 0) + { + select -add $object; + $select[$count] = $object; + $count++; + } + } +// } + print "\n"; + print $select; +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/setShapeNode.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/setShapeNode.mel new file mode 100644 index 0000000..0d631df --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/setShapeNode.mel @@ -0,0 +1,17 @@ +global proc setShapeNode() +{ + string $objects[] = `ls -sl -tr`; + print ("\n"); + print $objects; + for($object in $objects) + { + string $shapes[] = `ls -dag -lf $object`; + print ("\n"); + print $shapes; + for($shape in $shapes) + { + string $parents[] = `listRelatives -p $shape`; + rename $shape ($parents[0]+ "Shape"); + } + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/simpsonsArt.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/simpsonsArt.mel new file mode 100644 index 0000000..0f6dcf3 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/simpsonsArt.mel @@ -0,0 +1,334 @@ +/* simpsonsArt.mel + + THIS IS AN UPDATE TO JEFF PIDSADNY'S SIMPSONS ART MENU SCRIPT. + THIS REVISION HAS MAINLY CHANGED THE LOOK OF THE GUI AND ADDED + ICONS INSTEAD OF TEXT. + + AUTHOR: ARYAN HANBECK + + JULY 03 2002 + +*/ + +// +// SOURCE ALL SCRIPTS AND DEFINE GLOBAL PROCEDURES +// + + +//=========================================================================== +// validBMP +//=========================================================================== +// Description: Maya's UI layout will BOMB if you attempt to create a UI +// control that contains an image (a 'symbolButton' for example) +// where the specified image does not exist. +// +// This function queries the folders specified in the XBMLANGPATH +// environment variable for the specified BMP image. If the +// image is found, its name is returned. If the image is not +// found, the default image "vacantCell.xpm" is returned instead. +// +// Suggested use is to specify the image for a control by +// wrapping it within validBMP(); e.g.: +// +// symbolButton -image ( validBMP( "myImage.bmp" ); +// +// Constraints: +// +// Parameters: string $bmp: The name of the BMP image (no path, please). +// +// Return: (string): If specified BMP is valid, the BMP name is +// returned; if the BMP is not valid "vacantCell.xpm" +// is returned. +// +//=========================================================================== + + + proc string validBMP( string $bmp ) +{ + string $validBMP = "vacantCell.xpm"; + + string $pathEnv = `getenv XBMLANGPATH`; + string $paths[]; + tokenize $pathEnv ";" $paths; + for ( $p in $paths ) + { + string $bmpPath = ( $p + "/" + $bmp ); + if ( `file -q -exists $bmpPath` ) + { + $validBMP = $bmp; + break; + } + } + + return $validBMP; +} + + +source "C:/AW/Maya4.0/scripts/SimpsonsArt/renameScripts.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/forceUniqueNames.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/optimizeShaders.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/mappedPrelightWindow.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/rndPoints.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/setShapeNode.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.mel"; +source "C:/AW/Maya4.0/scripts/SimpsonsArt/uvz.mel"; + + + +global proc setShapeNode() +{ + source "C:/AW/Maya4.0/scripts/SimpsonsArt/setShapeNode.mel";setShapeNode; +} + +global proc uvz() +{ + source "C:/AW/Maya4.0/scripts/SimpsonsArt/uvz.mel"; +} + +global proc nameSpaceGui() +{ + source "C:/AW/Maya4.0/scripts/SimpsonsArt/nameSpaceGui.mel"; +} + +global proc renameTexture() +{ + source "C:/AW/Maya4.0/scripts/SimpsonsArt/renameTexture.mel";renameTexture; +} + +global proc simpsonsExporterOptions() +{ +setAttr "p3dDefaultExporterSetting.exportVertexOffsetAnims" 0; +setAttr "p3dDefaultExporterSetting.exportVisAnimations" 0; +setAttr "p3dDefaultExporterSetting.exportAnimations" 0; + +} + +global proc litOff() +{ + string $mats[] = `ls -type pure3dSimpleShader`; + for($mat in $mats) + { + $attr = $mat + ".dynamicallyLit"; + setAttr $attr 0; + $attrs = $mat + ".color"; + shadingConnection -e -cs on $attrs; + FixHWTextureInfo( $mat ); + } +// for($mat in $mats) +// { +// $attr = $mat + ".doubleSided"; +// setAttr $attr 0; +// $attrs = $mat + ".color"; +// shadingConnection -e -cs on $attrs; +// } +} + +global proc backfaceOff() +{ + string $objects[] = `ls -sl -dag -s`; + print ("\n"); + print $objects; + for($object in $objects) + { + setAttr ( $object + ".opposite") 0; + } +} + + +if(`window -ex "SAMmainwindow"`) +{ + deleteUI -wnd "SAMainWindow"; +} + +// +//CREATE THE GUI WINDOW AND ADD THE BUTTONS +// + +global proc simpsonsArt() +{ +window + -visible 1 + -title "SAM" + -sizeable 0 + -iconify 0 + -wh 147 300 + -maximizeButton 0 + SAMmainWindow; + columnLayout -adj true; + frameLayout + -label "Geometry" + -labelAlign "center" + -cll true + SAMgeometryFrame; + + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMgeometryRow; + + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/rnd.bmp" + -ann "Random Points" + -c "rndPoints" + SAMrndPoints; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/backfaceoff.bmp" + -ann "Backface Off" + -c "backfaceOff" + SAMbackfaceOff; + setParent ..; + setParent ..; + + frameLayout + -label "Lighting" + -labelAlign "center" + -cll true + -bv true + SAMlightingFrame; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMlightingRow; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/prelighttool.bmp" + -ann "Simpsons Prelight" + -c "mappedPrelightWindow" + SAMsimpsonsPreLight; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/prelitoff.bmp" + -ann "Prelit Off" + -c "litOff" + SAMpreLitOff; + setParent ..; + setParent ..; + + frameLayout + -label "Textures" + -labelAlign "center" + -cll true + -bv true + SAMtextureFrame; + columnLayout -adjustableColumn 1 SAMtextureColumn; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMtextureRow; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/renametex.bmp" + -ann "RenameTextures" + -c "renameTexture" + SAMrenameTextures; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/movetex.bmp" + -ann "Move Textures" + -c "yuya_copyFileTex" + SAMoveFiles; + setParent ..; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMtextureRow2; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/optimizetex.bmp" + -ann "Optimize Shaders" + -c "optimizeShaders" + SAMoptimizeShaders; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/uvz.bmp" + -ann "UVz Utility" + -c "uvz" + SAMuvz; + setParent ..; + setParent ..; + setParent ..; + frameLayout + -label "Hypergraph" + -labelAlign "center" + -cll true + -bv true + SAMhypergraphFrame; + columnLayout -adjustableColumn 1 SAMhypegraphColumn; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMhypergraphRow; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/setshape.bmp" + -ann "Set Shape Node" + -c "setShapeNode" + SAMsetShapeNode; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/removetxt.bmp" + -ann "Remove Text String" + -c "nameSpaceGui" + SAMremoveTextString; + setParent ..; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMHypergraphRow2; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/unique.bmp" + -ann "Force Unique Names" + -c "forceUniqueNames" + SAMforceUniqueNames; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/p3d.bmp" + -ann "Set Exporter Options" + -c "simpsonsExporterOptions" + SAMsetExporterOptions; + setParent ..; + rowLayout + -numberOfColumns 2 + -columnWidth 1 68 + -columnWidth 2 68 + SAMhypergraphRow3; + string $name = `textField -width 68`; + symbolButton + -w 68 + -h 28 + -image "C:/AW/Maya4.0/scripts/SimpsonsArt/icons/renamesh.bmp" + -ann "Rename Shapes" + -c ("renameShape `textField -q -text " + $name + "`") + renameShape; + setParent ..; + setParent ..; + setParent ..; + setParent ..; + + window -e + -wh 147 295 + SAMmainWindow; + +} +// end of script
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/snapCurveY.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/snapCurveY.mel new file mode 100644 index 0000000..8292125 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/snapCurveY.mel @@ -0,0 +1,75 @@ +global proc int srrRound( float $val ) +{ + int $intPart = trunc( $val ); + float $decPart = $val - $intPart; + + $val = $intPart; + if ( $decPart >= 0.5 ) $val += 1; + + return $val; +} + + +global proc snapCurveY( float $precision ) +{ + $precision = abs( $precision ); + + string $curves[]; + $curves = `ls -type nurbsCurve`; + + string $curve; + for ( $curve in $curves ) + { + int $numcvs; + string $curvecmd = ($curve + ".cp"); + $numcvs = `eval getAttr -size $curvecmd`; + + float $cv[ 3 ]; + int $i = 0; + for ( $i = 0; $i < $numcvs; $i++ ) + { + $curvecmd = ($curve + ".cp[" + $i + "]"); + $cv = `eval getAttr $curvecmd`; + + if ( $precision == 1 ) + { + $cv[ 1 ] = ceil( $cv[ 1 ] ); + } + + if ( $precision > 1 ) + { + float $div = $cv[ 1 ] / $precision; + + int $integerpart = trunc( $div ); + float $decpart = $div - $integerpart; + + if ( $decpart < 0.5 ) + { + $decpart = 0; + } + else + { + $decpart = 1; + } + + float $newdiv = $integerpart + $decpart; + + $cv[ 1 ] = $precision * $newdiv; + } + + if ( $precision < 1 ) + { + float $div = $cv[ 1 ] / $precision; + + $div = srrRound( $div ); + + float $newdec = $precision * $div; + + $cv[ 1 ] = $newdec; + } + + $curvecmd = ($curve + ".cp[" + $i + "].yv"); + eval setAttr $curvecmd $cv[ 1 ]; + } + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/uvz.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/uvz.mel new file mode 100644 index 0000000..a53ed85 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/uvz.mel @@ -0,0 +1,226 @@ +//=========================================================================== +// Copyright ©2001 Radical Entertainment Ltd. All rights reserved. +// +// Created: 13 Nov 2001 +// +// Component: MEL Script for Maya. +// Provides useful UV editing operations. +// +// Creator: Bryan Ewert +// +// Version: 1.0 +// Tested on Maya v3 and v4. +// +//=========================================================================== + +// ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× +// +// How to use: +// +// Call this script. A UI will be provided with the following functions: +// +// Spin: Spins the UVs around the selected face(s). +// +// Reverse Spin: Spins the UVs the other direction. +// Auto Map Cut: Cuts the UV seams on all edges of the face prior +// to performing the Spin operation. +// +// Note: The "Auto Map Cut" option is always immediately turned off. +// It is only necessary to cut the edges once for a particular +// face, and the Construction History stack will be inflated +// with unnecessary 'polyMapCut' operations if not. // +// +// ×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× + +//=========================================================================== +// getUVsInOrder +//=========================================================================== +// Description: Returns the UV components for the specified face in proper +// "construction" order. +// +// See < http://www.ewertb.com/maya/mel/mel_a55.html > +// +// Constraints: +// +// Parameters: string $face: The face component for which to retrieve the UVs. +// +// Return: (string[]) The UV components associated with the specified face. +// +//=========================================================================== +proc string[] getUVsInOrder( string $face ) +{ + string $uvOrder[]; + + string $vtxFace[] = `polyListComponentConversion -ff -tvf $face`; + $vtxFace = `filterExpand -sm 70 -ex true $vtxFace`; + + for ( $vf in $vtxFace ) + { + string $uv[] = `polyListComponentConversion -fvf -tuv $vf`; + $uvOrder[`size $uvOrder`] = $uv[0]; + } + + return $uvOrder; +} + +//=========================================================================== +// getFaceEdges +//=========================================================================== +// Description: Returns the edge components that construct the specified face. +// +// Constraints: +// +// Parameters: string $face: The face for which to retrieve the edges. +// +// Return: (string[]): The edge components. +// +//=========================================================================== +proc string[] getFaceEdges( string $face ) +{ + string $edges[] = `polyListComponentConversion -ff -te $face`; + $edges = `filterExpand -sm 32 -ex true $edges`; + + return $edges; +} + +//=========================================================================== +// performSpinUVz +//=========================================================================== +// Description: Invoked when the user presses the "Spin UVz" button. +// Spins the UVs. +// +// Constraints: If at least one polymesh face component is not selected +// then no action is taken. +// +// The "Auto Map Cut" option is always immediately turned off. +// It is only necessary to cut the edges once for a particular +// face, and the Construction History stack will be inflated +// with unnecessary 'polyMapCut' operations if not. Eventually +// I may determine a way to detect if an auto-cut is necessary +// and just skip the step when applicable. +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc performSpinUVz() +{ + string $faces[] = `filterExpand -sm 34 -ex true`; + + if ( `size $faces` > 0 ) + { + string $select[] = `ls -sl`; + + int $reverse = `checkBox -q -value rad_uvzReverse`; + int $autoCut = `checkBox -q -value rad_uvzAutoCut`; + + for ( $face in $faces ) + { + if ( $autoCut ) + { + // Only need to cut edges if any of the vertices + string $edges[] = getFaceEdges( $face ); + polyMapCut $edges; + } + + string $uvOrder[] = getUVsInOrder( $face ); + print $uvOrder; + print "------\n"; + int $numUVs = `size $uvOrder`; + float $uv[]; + float $u[], $v[]; + + for ( $i = 0; $i < $numUVs; $i++ ) + { + $uv = `polyEditUV -q $uvOrder[$i]`; + $u[`size $u`] = $uv[0]; + $v[`size $v`] = $uv[1]; + } + + for ( $i = 0; $i < $numUVs; $i++ ) + { + int $next; + + if ( $reverse ) + { + $next = ( $i + ( $numUVs - 1 ) ) % $numUVs; + } + else + { + $next = ( $i + 1 ) % $numUVs; + } + + polyEditUV -r false -u $u[$next] -v $v[$next] $uvOrder[$i]; + } + } + + checkBox -e -value off rad_uvzAutoCut; + + select -r $select; + } + else + { + warning( "UVz: No action taken -- Please select one or more faces." ); + } +} + +//=========================================================================== +// uvz +//=========================================================================== +// Description: Generates the UI for this script. +// +// Constraints: +// +// Parameters: (none) +// +// Return: (none) +// +//=========================================================================== +global proc uvz() +{ + if ( `window -exists raduvz` ) + deleteUI -window raduvz; + + window -title "UVz" -iconName "UVz" raduvz; + + columnLayout -adjustableColumn true; + + string $spinFrame = `frameLayout -label "Spin UVz on Face"`; + + string $spinForm = `formLayout`; + + string $spinReverse = `checkBox -label "Reverse Spin" rad_uvzReverse`; + string $spinAutoCut = `checkBox -label "Auto Map Cut" rad_uvzAutoCut`; + string $spinUVz = `button -label "Spin UVz"`; + + setParent ..; + + setParent ..; + + setParent ..; + + setParent ..; + + formLayout -e + + -af $spinReverse "top" 4 + -af $spinReverse "left" 4 + + -ac $spinAutoCut "top" 4 $spinReverse + -af $spinAutoCut "left" 4 + + -ac $spinUVz "top" 4 $spinAutoCut + -af $spinUVz "left" 4 + -af $spinUVz "right" 4 + -af $spinUVz "bottom" 2 + + $spinForm; + + // Attach command callbacks + button -e + -c performSpinUVz + $spinUVz; + + showWindow raduvz; +} diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.mel b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.mel new file mode 100644 index 0000000..7c018f9 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.mel @@ -0,0 +1,172 @@ +// +// Copy File Textures Ver.1.51 +// +// Created by Yuya Sugiyama < yuya@sb.sakura.ne.jp > +// Last Modify : 16th/December/2001 +// Please check my web site -INVISIBLE-. +// URL : http://sb.sakura.ne.jp/~yuya/ +// +// Description: +// This script copies file textures in current scene to current sourceimages +// directory. This script makes your file management easier. +// +// Usage: +// Type +// +// yuya_copyFileTex; +// +// Then appear the window. Set options and hit "Copy File Textures" button. +// Using specify directory option, path must be terminated in "\"(backslash). +// (If you use browse button, unnecessary paying attention to this limitation.) +// +// Please use (and modify) this at your own lisk. +// + + +// Start window procedure + +global proc yuya_copyFileTex () { + +if ((`window -ex yuya_copyFileTex`) == true) deleteUI yuya_copyFileTex; +window -t "Copy File Texture" -w 420 -h 100 yuya_copyFileTex; +columnLayout -adj 1; + +frameLayout -l "Copy File Texture" -la "center" -bs "etchedIn" -cll 1 -cl 0; + +columnLayout -adj 1; +radioButtonGrp -w 330 -cw3 140 100 100 -nrb 2 -label "Which Files?" -la2 "All Files" "Selected Files" -select 1 yuya_allOrSel; + +columnLayout -adj 1; +radioButtonGrp -w 330 -cw3 140 100 100 -nrb 2 -label "Mofify Texture Node?" -la2 "Yes" "No" -select 1 yuya_modTexNode; + +checkBoxGrp -l "Specify Directory" + -onCommand + "textFieldGrp -e -ed true yuya_cftDirField; + symbolButton -e -enable true yuya_cftBrowseButton;" + -offCommand + "textFieldGrp -e -ed false yuya_cftDirField; + symbolButton -e -enable false yuya_cftBrowseButton;" + yuya_cftCB; + +rowLayout -w 330 -nc 2 -cw2 380 40 -cal 1 "right" yuya_cftDirNameLayout; +textFieldGrp -l "Directory" -ed false -w 375 yuya_cftDirField; +symbolButton + -enable false + -image "navButtonBrowse.xpm" + -c "yuya_getDirProc" yuya_cftBrowseButton; + +setParent..; +setParent..; +setParent..; +setParent..; + +button -l "Copy File Textures." -c "yuya_copyFileTexMain (`radioButtonGrp -q -select yuya_allOrSel`) (`radioButtonGrp -q -select yuya_modTexNode`)"; + +showWindow; + +} + +// End create window procedure + + +// Start copy file textures procedure + +global proc int yuya_copyFileTexMain ( int $allOrSel, int $modTexNode ) { + +if ( $allOrSel == 1 ) { + select -all; +} + +string $path[] = `ls -sl -type file`; +select -cl; + +if ( $allOrSel == 2 ) { + select -add $path; +} + +string $copyPath; + +if (`checkBoxGrp -q -value1 yuya_cftCB`){ + + $copyPath = `textFieldGrp -q -fileName yuya_cftDirField`; + +}else{ + $copyPath =`workspace -q -rd`+"sourceimages/"; + for ($i=1; $i<=17; $i++){ + $copyPath = `substitute "/" $copyPath "\\"`; + } +} + +string $batchName = `file -q -sceneName`; + +if( `size($batchName)` ){ + string $tokBatName[]; + int $numTokenB = `tokenize $batchName "/" $tokBatName`; + $batchName = $tokBatName[$numTokenB-1] +".bat"; + $batchName = `substitute ".ma" $batchName ""`; + $batchName = `substitute ".mb" $batchName ""`; + +}else{ + $batchName = "untitled.bat"; +} + +system ("echo on>"+$copyPath+"copyFileTex_"+$batchName); + +string $current; +for ( $current in $path ) { + + string $currentFullPath = `getAttr ($current + ".ftn")`; + + string $tokFileName[]; + int $numToken = `tokenize $currentFullPath "/" $tokFileName`; + string $fileName = $tokFileName[$numToken-1]; + + for ($i=1; $i<=17; $i++){ + $currentFullPath = `substitute "/" $currentFullPath "\\"`; + } + + system ("echo copy \""+$currentFullPath+"\" \""+$copyPath+"\">>\""+$copyPath+"copyFileTex_"+$batchName+"\""); + + +} + +system ("echo del \""+$copyPath+"copyFileTex_"+$batchName+"\">>\""+$copyPath+"copyFileTex_"+$batchName+"\""); +system ("start \""+$copyPath+"copyFileTex_"+$batchName+"\""); + +if ($modTexNode == 1){ + + for ( $current in $path ) { + + string $currentFullPath = `getAttr ($current + ".ftn")`; + + string $tokFileName[]; + int $numToken = `tokenize $currentFullPath "/" $tokFileName`; + string $fileName = $tokFileName[$numToken-1]; + + setAttr ( $current + ".ftn" ) -type "string" ($copyPath+$fileName); + + } + +} + +return 1; + +} + +// End copy file textures procedure + + +// Get Directory Name + +global proc yuya_getDirProc(){ + +fileBrowser "yuya_getDirNameProc" "Select Directory" "directory" 4; + +} + +global proc yuya_getDirNameProc(string $dir, string $type){ + +textFieldGrp -e -fileName ($dir+"\\") yuya_cftDirField; + +} + diff --git a/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.xpm b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.xpm new file mode 100644 index 0000000..ef06b32 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/SimpsonsArt/yuya_copyFileTex.xpm @@ -0,0 +1,198 @@ +/* XPM */ +static char *FILE_xpm[]={ +"32 32 163 2", +" c #C1C1C1", +" 0 c #9C9C00", +" 1 c #FFFF9C", +" 2 c #9D9C01", +" 3 c #9F9D04", +" 4 c #A29F0A", +" 5 c #A6A111", +" 6 c #ABA317", +" 7 c #AFA61E", +" 8 c #FFFE9C", +" 9 c #FFFC9C", +" a c #FFF79C", +" b c #FFF29C", +" c c #FFED9C", +" d c #F9E095", +" e c #A69720", +" f c #000000", +" g c #FFFFFF", +" h c #FFE79C", +" i c #EDCC86", +" j c #8F7717", +" k c #FFFD9C", +" l c #FFF39C", +" m c #FFE89C", +" n c #FFE29C", +" o c #E6C07E", +" p c #836614", +" q c #FFF89C", +" r c #FFE39C", +" s c #FFDE9C", +" t c #E6BC7E", +" u c #856615", +" v c #FFFB9C", +" w c #FFEE9C", +" x c #FFDA9C", +" y c #E6BA7E", +" z c #866817", +" A c #FFD69C", +" B c #8D8700", +" C c #6E5D00", +" D c #FFE99C", +" E c #9E9D03", +" F c #F0E7A5", +" G c #F0E3A5", +" H c #D0A99C", +" I c #945866", +" J c #C0AC92", +" K c #E6DD7E", +" L c #B49840", +" M c #9F9E06", +" N c #D1C8A8", +" O c #BC0000", +" P c #DD0000", +" Q c #E00305", +" R c #CF7777", +" S c #A3A33A", +" T c #E5E59B", +" U c #A29F09", +" V c #A5A10F", +" W c #A9A315", +" X c #A9A072", +" Y c #572323", +" Z c #E20507", +" & c #D26364", +"0 c #E6E6AB", +"00 c #652425", +"01 c #D50609", +"02 c #E40607", +"03 c #D65151", +"04 c #EDE6A2", +"05 c #F4F4A3", +"06 c #B7B3B3", +"07 c #591212", +"08 c #BD0304", +"09 c #FFF59C", +"0a c #BDBBBB", +"0b c #6B1313", +"0c c #D5080A", +"0d c #DB4A44", +"0e c #EDE686", +"0f c #C7B257", +"0g c #B8964B", +"0h c #B49740", +"0i c #B49640", +"0j c #B49540", +"0k c #B49440", +"0l c #C7AB57", +"0m c #EDDC86", +"0n c #A4A429", +"0o c #D81511", +"0p c #E10A09", +"0q c #E45F48", +"0r c #E3362A", +"0s c #E7090A", +"0t c #E6DC7E", +"0u c #E6DB7E", +"0v c #E6D97E", +"0w c #E6D87E", +"0x c #E6D67E", +"0y c #E6D47E", +"0z c #F9EA95", +"0A c #FFF09C", +"0B c #AAA23E", +"0C c #B57C67", +"0D c #BE0706", +"0E c #E5090B", +"0F c #FEFD9C", +"0G c #FFFA9C", +"0H c #FFF19C", +"0I c #FFEF9C", +"0J c #B40D04", +"0K c #D50508", +"0L c #E20608", +"0M c #F2D892", +"0N c #FFF99C", +"0O c #FFF69C", +"0P c #FFF49C", +"0Q c #FFEA9C", +"0R c #BBB9B9", +"0S c #652324", +"0T c #5A1614", +"0U c #773E2B", +"0V c #B60304", +"0W c #D60A0B", +"0X c #E8090B", +"0Y c #E8966D", +"0Z c #FFEC9C", +"0& c #AAAA49", +"1 c #B8AF9D", +"10 c #825757", +"11 c #86523D", +"12 c #822617", +"13 c #994D30", +"14 c #D0281C", +"15 c #E5080A", +"16 c #DA5D52", +"17 c #E9E5A9", +"18 c #FFEB9C", +"19 c #FFE59C", +"1a c #E5E5AB", +"1b c #BBAB90", +"1c c #946543", +"1d c #903E27", +"1e c #973536", +"1f c #E9E4A9", +"1g c #FFE49C", +"1h c #E4E2AC", +"1i c #E4E1AC", +"1j c #E4E0AC", +"1k c #AE9278", +"1l c #E9E2A9", +"1m c #FFE69C", +"1n c #FFE09C", +"1o c #FFE19C", +"1p c #FFDF9C", +"1q c #FFDD9C", +"1r c #FFDB9C", +"1s c #FFDC9C", +"1t c #FFD89C", +"1u c #FFD99C", +"1v c #FFD79C", +"1w c #FFD59C", +"1x c #FFD49C", +" ", +" 0 0 0 ", +" 0 0 0 1 0 0 0 ", +" 0 0 1 1 1 1 1 0 2 3 4 5 6 7 ", +" 0 1 1 1 1 1 1 8 9 a b c d e f f f g g g f f f g g g ", +" 0 1 1 1 1 1 8 9 a b c h i j f f f g g g f f f g g g ", +" 0 1 1 1 1 k 9 a l c m n o p f f f g g g f f f g g g ", +" 0 1 1 1 k 9 q l c m r s t u g g g f f f g g g f f f ", +" 0 1 1 k v q l w m r s x y z g g g f f f g g g f f f ", +" 0 8 k v q l w m r s x A B C g g g f f f g g g f f f ", +" 2 k v q l w D r s 0 0 0 B C f f f g g g f f f g g g ", +" E v q F G H I J 0 0 1 1 K L f f f g g g f f f g g g ", +" M q l N O P Q R S T 1 1 K L f f f g g g f f f g g g ", +" U V W X Y O Q Z &0 1 1 K L g g g f f f g g g f f f 0 0 ", +" 0001 Z02030405 K L g g g f f f g g g f f f a 0 ", +" 06070802020304 K L g g g f f f g g g f f f09 0 ", +" 0a0b0c02020d0e0f0g L L L L0h0h0i0j0k0l0m b 0 ", +" 0n0b0o020p0q0r0s K K0t0u0u0v0w0x0y0m0z0A 0 ", +" 0B0C0D02 Z0E0s0s0F 8 k v0G q a09 l0H0I c 0 ", +" 0J0K020L Z0s0s0s0M 9 v0N q0O0P l0H0I c0Q 0 ", +" 0R0S0T0U0V0W0s0X0s0Y v0N q0O0P b0A w0Z0Q m 0 ", +" 0&1 1011121314151617 a09 l b0I w18 D h19 0 ", +" 01a1a1a1b101c1d1e1f09 l0H0I c18 D h1g n 0 ", +" 0 1 8 k1h1i1j1f1k1l b0A w0Z0Q m1m1g n1n 0 ", +" 0 8 k 90G0N a0O0P b0A w0Z0Q m19 r1o1p1q 0 ", +" 0 k 90G q a09 l0H0I c18 D h19 r1o1p1q1r 0 ", +" 0 v0G q0O09 l0H0I c18 D1m1g n1n s1s x1t 0 ", +" 00N q0O0P b0A w0Z0Q m1m1g n1p s1r x1t A 0 ", +" 0 a090P b0A w0Z D h19 r1o1p1q1r1u1v1w1x 0 ", +" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", +" ", +" "}; diff --git a/tools/MayaTools/Maya4.0/scripts/others/TerrainType.mel b/tools/MayaTools/Maya4.0/scripts/others/TerrainType.mel new file mode 100644 index 0000000..79026d6 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/TerrainType.mel @@ -0,0 +1,426 @@ +//=========================================================================== +// Copyright ©2002 Radical Entertainment Ltd. All rights reserved. +// +// Component: TerrainType.mel +// +// Description: Provides a UI for applying the Pure3D Game Attribute +// '.TerrainType' to Materials. +//=========================================================================== + +//=========================================================================== +// version +//=========================================================================== +// Description: Returns the current version for this MEL script. +// Used for version control. +//=========================================================================== +proc float version() +{ + return ( 1.1 ); +} + +// //////////////////////////////////////////////////////////////// +// rootNode +// +// Description: Strips the dot-suffix of the specified string. +// e.g. "object.attribute" is returned as "object" + +proc string rootNode( string $object ) +{ + string $buffer[]; + tokenize $object "." $buffer; + return $buffer[0]; +} + +proc string getFacetSG( string $facet ) +// Input (string) - facet component to query (e.g. "pSphere1.f[0]") +// Result (string) - Shading Group shading facet (e.g. "lambert2SG") +{ + string $facetSG = ""; + + // Get array of all Shading Groups + string $shadingGroups[] = `ls -type shadingEngine`; + + for ( $shadingGroup in $shadingGroups ) + { + // If this facet is a member of the shading set for this + // Shading Group, tag this as the facet's shader + + // NOTE: This _fails!_ if the entire object is assigned to the shader, + // and no face components are represented in the Shading Group set. + if ( `sets -isMember $shadingGroup $facet` ) + { + $facetSG = $shadingGroup; + break; + } + } + + return $facetSG; +} + +// ////////////////////////////////////////////////////////////////////// +// getMaterialFromSG +// +// Description: Returns the Material node feeing the '.surfaceShader' +// attribute of the specified Shading Group node (shadingEngine). + +proc string getMaterialFromSG( string $SG ) +{ + string $material = ""; + + if ( "shadingEngine" == `nodeType $SG` && `connectionInfo -id ( $SG + ".surfaceShader" )` ) + $material = rootNode( `connectionInfo -sfd ( $SG + ".surfaceShader" )` ); + + return $material; +} + +// //////////////////////////////////////////////////////////////////////// +// getSGFromMaterial +// +// Description: Returns the Shading Group node being fed by the '.outColor' +// attribute of the specified Material node +proc string[] getSGFromMaterial( string $material ) +{ + string $SG[]; + + string $class[] = getClassification( `nodeType $material` ); + + if ( "shader/surface" == $class[0] && `connectionInfo -is ( $material + ".outColor" )` ) + { + string $dests[] = `connectionInfo -dfs ( $material + ".outColor" )`; + for ( $dest in $dests ) + { + if ( "shadingEngine" == `nodeType $dest` ) + { + $SG[`size $SG`] = rootNode( $dest ); + } + } + } + + return $SG; +} + +proc int TerrainTypeEnum() +{ + string $enumUI = "TerrainTypeEnumUI"; + string $interiorUI = "TerrainTypeInteriorUI"; + + int $enumType = `optionMenu -q -select $enumUI`; + $enumType--; // Convert from 1-based to 0-based + $enumType--; // Skip "Undefined" + + int $isInterior = `checkBox -q -value $interiorUI`; + if ( $isInterior ) $enumType += 1073741824; // ( 2 ** 30 ) + + return $enumType; +} + +proc SetTerrainTypeEnum( int $enumType ) +{ + int $bIsInterior = false; + + if ( $enumType > 1073741823 ) + { + $enumType -= 1073741824; // ( 2 ** 30 ) + $bIsInterior = true; + } + + $enumType++; // Skip "Undefined" + $enumType++; // Convert from 0-based to 1-based + + string $enumUI = "TerrainTypeEnumUI"; + string $interiorUI = "TerrainTypeInteriorUI"; + + optionMenu -e -select $enumType $enumUI; + checkBox -e -value $bIsInterior $interiorUI; +} + +proc string[] GetSelectionAsFaces() +{ + string $select[] = `ls -sl`; + + $select = `polyListComponentConversion -tf $select`; + $select = `filterExpand -sm 34 -ex true $select`; + + return $select; +} + +proc int HasTerrainAttr( string $node, string $TerrainAttr ) +{ + if ( `attributeQuery -node $node -exists $TerrainAttr` ) return true; + return false; +} + +proc AssignTerrainType( string $node, string $TerrainAttr, int $type ) +{ + if ( HasTerrainAttr( $node, $TerrainAttr ) ) + { + setAttr ( $node + "." + $TerrainAttr ) $type; + } +} + +proc int GetTerrainType( string $node, string $TerrainAttr ) +{ + int $type = 0; + if ( HasTerrainAttr( $node, $TerrainAttr ) ) + { + $type = `getAttr ( $node + "." + $TerrainAttr )`; + } + return $type; +} + +proc int AddTerrainTypeAttr( string $node, string $TerrainAttr ) +{ + // Does the .TerrainType attr exist? + if ( `attributeQuery -node $node -exists $TerrainAttr` ) + { + return false; + } + + // Add the P3DGameAttr + if ( !`attributeQuery -node $node -exists "P3D_GameAttr"` ) + { + addAttr -ln P3D_GameAttr -dt "string" -hidden true $node; + } + + // Add the TerrainAttr to the P3DGameAttr + string $gameAttr = `getAttr ( $node + ".P3D_GameAttr" )`; + if ( $gameAttr != "" ) + { + $gameAttr += "~"; + } + $gameAttr = $gameAttr + $TerrainAttr; + setAttr -type "string" ( $node + ".P3D_GameAttr" ) $gameAttr; + + // Add the .TerrainType attribute + addAttr -ln $TerrainAttr -at "long" -hidden true $node; + + return true; +} + +global proc TerrainType_Apply( string $TerrainAttr ) +{ + int $type = TerrainTypeEnum(); + if ( $type < 0 ) return; // Don't bother with "Undefined" + + string $materials[] = `ls -sl -materials`; + + for ( $m in $materials ) + { + if ( ( $m == "lambert1" ) || ( $m == "particleCloud1" ) ) continue; + + AddTerrainTypeAttr( $m, $TerrainAttr ); + + AssignTerrainType( $m, $TerrainAttr, $type ); + } +} + +global proc TerrainType_ApplyIndirect( string $TerrainAttr ) +{ + int $type = TerrainTypeEnum(); + if ( $type < 0 ) return; // Don't bother with "Undefined" + + string $select[] = GetSelectionAsFaces(); + + for ( $f in $select ) + { + string $sg = getFacetSG( $f ); + + if ( ( $sg == "" ) || ( $sg == "initialShadingGroup" ) ) continue; + + string $mat = getMaterialFromSG( $sg ); + + if ( $mat != "" ) + { + AddTerrainTypeAttr( $mat, $TerrainAttr ); + + AssignTerrainType( $mat, $TerrainAttr, $type ); + } + } +} + +global proc TerrainType_Select( string $TerrainAttr ) +{ + int $enumType = TerrainTypeEnum(); + + string $matches[]; + + string $materials[] = `ls -materials`; + + for ( $m in $materials ) + { + if ( ( $m == "lambert1" ) || ( $m == "particleCloud1" ) ) continue; + + if ( + ( HasTerrainAttr( $m, $TerrainAttr ) && GetTerrainType( $m, $TerrainAttr ) == $enumType ) || + ( $enumType < 0 ) && ( !HasTerrainAttr( $m, $TerrainAttr ) ) + ) + { + $matches[`size $matches`] = $m; + } + } + + select $matches; + +} + +global proc TerrainType_SelectIndirect( string $TerrainAttr ) +{ + int $enumType = TerrainTypeEnum(); + + string $matches[]; + + string $materials[] = `ls -materials`; + + for ( $m in $materials ) + { + if ( + ( HasTerrainAttr( $m, $TerrainAttr ) && GetTerrainType( $m, $TerrainAttr ) == $enumType ) || + ( $enumType < 0 ) && ( !HasTerrainAttr( $m, $TerrainAttr ) ) + ) + { + string $sg[] = getSGFromMaterial( $m ); + for ( $s in $sg ) + { + $matches[`size $matches`] = $s; + } + } + + } + + // Don't alter user selection if nothing found. + if ( `size $matches` > 0 ) + { + select $matches; + } +} + +global proc TerrainType_SelectionCallback( string $TerrainAttr ) +{ + string $materials[] = `ls -sl -materials`; + if ( `size $materials` > 0 ) + { + if ( HasTerrainAttr( $materials[0], $TerrainAttr ) ) + { + int $type = `getAttr ( $materials[0] + "." + $TerrainAttr )`; + SetTerrainTypeEnum( $type ); + } + else + { + SetTerrainTypeEnum( -1 ); + } + + TerrainType_EnumCallback(); // update the optionMenu + } +} + +global proc TerrainType_EnumCallback() +{ + string $enumUI = "TerrainTypeEnumUI"; + string $applyMaterialUI = "TerrainTypeApplyMaterialUI"; + string $applyObjectUI = "TerrainTypeApplyObjectUI"; + + int $enable = `optionMenu -q -select $enumUI` > 1; + button -e -enable $enable $applyMaterialUI; + button -e -enable $enable $applyObjectUI; +} + +global proc TerrainType() +{ + string $TerrainAttr = "TerrainType"; + + string $windowUI = "TerrainTypeUI"; + + string $enumUI = "TerrainTypeEnumUI"; + string $interiorUI = "TerrainTypeInteriorUI"; + string $applyMaterialUI = "TerrainTypeApplyMaterialUI"; + string $applyObjectUI = "TerrainTypeApplyObjectUI"; + + string $enumArray[] = + { + "* Undefined *", + "Road", + "Grass", + "Sand", + "Gravel", + "Water", + "Wood", + "Metal", + "Dirt" + }; + + if ( `window -exists $windowUI` ) + deleteUI -window $windowUI; + + window -title ( "Terrain Type v" + version() ) $windowUI; + + columnLayout -adj true; + + frameLayout -label "Surface"; + columnLayout -adj true; + optionMenu $enumUI; + for ( $e = 0; $e < `size $enumArray`; $e++ ) + { + menuItem -label $enumArray[$e]; + } + checkBox -label "Interior" -align "left" $interiorUI; + setParent ..; + setParent ..; + + frameLayout -label "Materials"; + columnLayout -adj true; + + button + -label "Apply To Materials" + -c ( "TerrainType_Apply \"" + $TerrainAttr + "\"" ) + -ann "Applies the displayed Terrain Type to all selected Materials." + $applyMaterialUI; + button + -label "Select Assigned Materials" + -c ( "TerrainType_Select \"" + $TerrainAttr + "\"" ) + -ann "Selects all Materials assigned to the displayed Terrain Type."; + + + setParent ..; + + setParent ..; + + + frameLayout -label "Objects"; + columnLayout -adj true; + + button + -label "Apply To Objects" + -c ( "TerrainType_ApplyIndirect \"" + $TerrainAttr + "\"" ) + -ann "Applies the displayed Terrain Type to all Materials assigned to the selected objects." + $applyObjectUI; + button + -label "Select Assigned Objects" + -c ( "TerrainType_SelectIndirect \"" + $TerrainAttr + "\"" ) + -ann "Selects all objects assigned to Materials bearing the displayed Terrain Type."; + setParent ..; + + setParent ..; + + setParent ..; + + // Option Menu should respond to user selection, to reflect current type + // of selected material + scriptJob -parent $enumUI -event "SelectionChanged" ( "TerrainType_SelectionCallback \"" + $TerrainAttr + "\"" ); + + optionMenu -e + -cc TerrainType_EnumCallback + -select 2 + $enumUI; + + checkBox -e + -value off + $interiorUI; + + TerrainType_SelectionCallback $TerrainAttr; + + showWindow $windowUI; +} + +/* +source TerrainType; TerrainType; +*/ diff --git a/tools/MayaTools/Maya4.0/scripts/others/bobsMenu.mel b/tools/MayaTools/Maya4.0/scripts/others/bobsMenu.mel new file mode 100644 index 0000000..b8c5b4a --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/bobsMenu.mel @@ -0,0 +1,33 @@ +global proc bobsMenu(){ + + global string $gMainWindow; + + setParent $gMainWindow; + + menu -l "Bobs Menu" + -p MayaWindow + -to 1 + -aob true + -fi "bob_Mr_T.bmp" + bobsMenu; + + menuItem -l "Refresh Layers" + -ann ("") + -echoCommand true + -c "reBuildLayers" + reBuildLayers; + + menuItem -divider true; + + menuItem -l "Persp To Ortho" + -ann ("") + -echoCommand true + -c "swapCamera 0" + swapCamera; + + menuItem -l "Back To Persp" + -ann ("") + -echoCommand true + -c "swapCamera 1" + swapCamera2; +};
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/os_cleanup.mel b/tools/MayaTools/Maya4.0/scripts/others/os_cleanup.mel new file mode 100644 index 0000000..020de04 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/os_cleanup.mel @@ -0,0 +1,3 @@ + + +os_RemoveUI();
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/os_main.mel b/tools/MayaTools/Maya4.0/scripts/others/os_main.mel new file mode 100644 index 0000000..7a8c567 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/os_main.mel @@ -0,0 +1,228 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// TE_main.mel +// +// Description: Installs the Object Snapper (OS) interface. +// As a convention all Object Snapper global procedures +// and global variables are prefixed with "os_". All commands +// exposed through OS plugins are prefixed with "OS_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created March 18 2002 -- Cary Brisebois +//----------------------------------------------------------------------------- + + +global float $gOS_Offset = 0.10; + + +//----------------------------------------------------------------------------- +// o s _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// o s _ M C B _ A b o u t +// +// Synopsis: Display an About Object Snapper window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_MCB_About() +{ + string $pluginVersion = "1.0"; + + string $message = ( "\nSimpsons Road Rage Object Snapper.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About Object Snapper" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// o s _ d o M a i n M e n u I t e m s +// +// Synopsis: Creates the OS menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_doMainMenuItems( string $menu ) +{ + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Snap Single Selected" -command ( "os_MCB_SnapSingleSelected()" ); + + menuItem -divider true; + + menuItem -label "Snap All Selected" -command ( "os_MCB_SnapSelected()" ); + + menuItem -divider true; + + menuItem -label "Snap Tree Line" -command ( "os_MCB_SnapTreeLine()" ); + + menuItem -divider true; + + menuItem -label "About" -command "os_MCB_About()"; + + menuItem -optionBox true -command "os_MCB_OSOptions()"; + + setParent -m ..; +} + +//----------------------------------------------------------------------------- +// o s _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_InstallUI() +{ + + global string $gMainWindow; + + // + // Install OS menu as a root menu. + // + if ( `menu -exists os_MainMenu` ) deleteUI os_MainMenu; + menu -label "Object Snapper" -allowOptionBoxes true -parent $gMainWindow os_MainMenu; + + os_doMainMenuItems "os_MainMenu"; +} + +//============================================================================== +// global proc os_RemoveUI +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_RemoveUI() +{ + if ( `menu -exists os_MainMenu` ) deleteUI os_MainMenu; + if ( `window -exists os_OptionWindow` ) deleteUI os_OptionWindow; +} + +//============================================================================== +// global proc os_MCB_SnapSelected +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_SnapSelected() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 0 ); +} + + +//============================================================================== +// global proc os_MCB_SnapSingleSelected +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_SnapSingleSelected() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 1 ); +} + +//============================================================================= +// global proc os_MCB_SnapTreeLine +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================= +global proc os_MCB_SnapTreeLine() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 2 ); +} + +//============================================================================== +// global proc os_MCB_OSOptions +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_OSOptions() +{ + global float $gOS_Offset; + + if ( `window -exists os_OptionWindow` ) deleteUI os_OptionWindow; + + window -title "Object Snapper Options" os_OptionWindow; + + columnLayout; + + rowLayout -nc 2; + + text -label "Offset (M):"; + + floatField -min -10.0 -max 10.0 -value $gOS_Offset -cc ("$gOS_Offset = #1"); + + setParent ..; + + setParent ..; + + showWindow; +} + +evalDeferred "os_InstallUI";
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/reBuildLayers.mel b/tools/MayaTools/Maya4.0/scripts/others/reBuildLayers.mel new file mode 100644 index 0000000..1d126be --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/reBuildLayers.mel @@ -0,0 +1,111 @@ +global proc reBuildLayers() +{ +//Delete the first 40 layers + +$DeleteLayer_Index = 1; +$DeleteLayer_NumTimes = 40; +while ($DeleteLayer_Index++ < $DeleteLayer_NumTimes) +{ +layerEditorLayerButtonSelect 1 ""; +layerEditorDeleteLayer ""; +}; + +//list all top groups + +SelectAllCameras; +$cameras = `ls -sl`; + +SelectAllLights; +$lights = `ls -sl`; + +string $misc[]; +if (`objExists "p3dExporterOptions*"`) +{ +select "p3dExporterOptions*"; +$misc = `ls -sl`; +}; + +select -ado; +select -d $cameras $misc $lights; +$TopGroups = `ls -sl`; +string $TopGroup; + +//create a layer for each top groups + +for ($TopGroup in $TopGroups) +{ + select -r $TopGroup; + createDisplayLayer -name ("TG_" + $TopGroup); +}; + +SelectAllJoints; +createDisplayLayer -name "All_BVs"; + +if (`objExists "*L01only*"`) +{ +select -r "*L01only*"; +createDisplayLayer -name "KG_L01only"; +}; + +if (`objExists "*L02only*"`) +{ +select -r "*L02only*"; +createDisplayLayer -name "KG_L02only"; +}; + +if (`objExists "*L03only*"`) +{ +select -r "*L03only*"; +createDisplayLayer -name "KG_L03only"; +}; + +if (`objExists "*L04only*"`) +{ +select -r "*L04only*"; +createDisplayLayer -name "KG_L04only"; +}; + +if (`objExists "*L05only*"`) +{ +select -r "*L05only*"; +createDisplayLayer -name "KG_L05only"; +}; + +if (`objExists "*L06only*"`) +{ +select -r "*L06only*"; +createDisplayLayer -name "KG_L06only"; +}; + +if (`objExists "*L07only*"`) +{ +select -r "*L07only*"; +createDisplayLayer -name "KG_L07only"; +}; + + +//change color of specific layers + +if (`objExists "TG_*gens*.color"`) + setAttr "TG_*gens*.color" 29; + +if (`objExists "TG_*landmarks*.color"`) + setAttr "TG_*landmarks*.color" 30; + +if (`objExists "TG_*dynamics*.color"`) + setAttr "TG_*dynamics*.color" 22; + +if (`objExists "TG_*track*.color"`) + setAttr "TG_*track*.color" 28; + +if (`objExists "All_BVs"`) + setAttr "All_BVs.color" 6; + +if (`objExists "TG_*work*.color"`) +{ + setAttr "TG_*work*.color" 13; + setAttr "TG_*work*.visibility" 0; +}; +}; + + diff --git a/tools/MayaTools/Maya4.0/scripts/others/showAndLight.mel b/tools/MayaTools/Maya4.0/scripts/others/showAndLight.mel new file mode 100644 index 0000000..973c0d4 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/showAndLight.mel @@ -0,0 +1,113 @@ +global proc swapGeo (string $showGeo , string $hideGeo1, string $hideGeo2)
+{
+select -r ("*" + $showGeo + "only*");
+ //select -r ("*" + 02 + "only*");//
+select -hi;
+ShowSelectedObjects;
+select -r ("*" + $hideGeo1 + "only*");
+ //select -r ("*" + 05 + "only*");//
+select -add ("*" + $hideGeo2 + "only*");
+ //select -add ("*" + 05 + "only*");//
+select -hi;
+HideSelectedObjects;
+select -cl;
+};
+
+proc ShowBVShapes ()
+{
+select -r "P3D_BVol*Shape*" ;
+$select = `ls -sl`;
+string $sel;
+for ($sel in $select)
+ setAttr ($sel + ".visibility") 1;
+};
+
+
+
+//=============================================//
+global proc selectDrawableOnly ()
+{
+ $shapeSel = `ls -sl -s -v`;
+ select $shapeSel;
+}
+global proc hideDontlight ()
+{
+if ( `objExists "*dontlight*"` )
+{
+ select -r "*dontlight*";
+ select -hi;
+ HideSelectedObjects;
+}
+else
+ { warning("there are no objects that you don't want to light?"); };
+};
+
+global proc showDontlight ()
+{
+if ( `objExists "*dontlight*"` )
+{
+ select -r "*dontlight*";
+ select -hi;
+ ShowSelectedObjects;
+}
+else
+ { warning("there are no objects that you don't want to light?"); };
+};
+
+
+global proc selectVisGeo ()
+
+{
+if ( `objExists "*landmarks*"` )
+{
+ select -add -vis "*landmarks*";
+}
+else
+{
+warning("there are no landmarks in your scene?");
+};
+select -add -vis "*gens*";
+select -add -vis "*track*";
+select -add -vis "*dynamics*";
+select -hi;
+}
+;
+
+
+
+
+//=============================================//
+
+
+
+
+global proc bobPrelight ()
+{
+toggleMaterialMapping(0);polyGeoSampler -cs -ul -sf 1 -su -colorBlend "overwrite" -alphaBlend "overwrite"; toggleMaterialMapping(1);
+}
+;
+
+
+
+
+//=============================================//
+
+
+
+
+global proc showAndLight (string $wang, string $chung, string $fung)
+{
+swapGeo $wang $chung $fung;
+hideDontlight;
+selectVisGeo;
+selectDrawableOnly;
+bobPrelight;
+showDontlight;
+swapGeo $wang $chung $fung;
+ShowBVShapes;
+};
+//showAndLight 06 03 03;//
+//showAndLight 03 06 06;//
+
+
+
diff --git a/tools/MayaTools/Maya4.0/scripts/others/swapCamera.mel b/tools/MayaTools/Maya4.0/scripts/others/swapCamera.mel new file mode 100644 index 0000000..5e1a9a3 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/swapCamera.mel @@ -0,0 +1,104 @@ +proc swapCamDefaults (){ +global string $camera[]; +global float $camRotY; +global float $camRotX; +global float $camRotZ; +global float $camTranY; +global float $camTranX; +global float $camTranZ; +$camera[0]= "persp"; +float $camRotY =0; +float $camRotX =0; +float $camRotZ =0; +float $camTranY =0; +float $camTranX =0; +float $camTranZ =0; +}; + +global proc perspToOrtho(){ +global string $camera[]; +global float $camRotY; +global float $camRotX; +global float $camRotZ; +global float $camTranY; +global float $camTranX; +global float $camTranZ; + +$temp = `ls -sl`; +{ string $camera = `modelPanel -q -camera modelPanel4`; eval select `getCameraNode view $camera` `getCameraNode up $camera` $camera; }; +$camera = `ls -sl`; +$camRotY = `getAttr ($camera[0] + ".rotateY")`; +$camRotX = `getAttr ($camera[0] + ".rotateX")`; +$camRotZ = `getAttr ($camera[0] + ".rotateZ")`; +$camTranY = `getAttr ($camera[0] + ".translateY")`; +$camTranX = `getAttr ($camera[0] + ".translateX")`; +$camTranZ = `getAttr ($camera[0] + ".translateZ")`; +int $camRotY1; +int $camRotX1; +int $camRotZ1; +if ($camRotY <= 0) + $camRotY1 = (($camRotY-45) % 360.0) / 90; +else + $camRotY1 = (($camRotY+45) % 360.0) / 90; +$camRotY90 = $camRotY1 * 90; + +if ($camRotX <= 0) + $camRotX1= (($camRotX-45) % 360.0) / 90; +else + $camRotX1= (($camRotX+45) % 360.0) / 90; +$camRotX90 = $camRotX1 * 90; +if ($camRotZ <= 0) + $camRotZ1= (($camRotZ-45) % 360.0) / 90; +else + $camRotZ1= (($camRotZ+45) % 360.0) / 90; +$camRotZ90 = $camRotZ1 * 90; + +//$camRotZ90 = (floor ((($camRotZ+45) % 360.0)/90))*90;// +//makes ortho// +setAttr ($camera[0] + ".rotateY") $camRotY90; +setAttr ($camera[0] + ".rotateX") $camRotX90; +setAttr ($camera[0] + ".rotateZ") $camRotZ90; +setAttr ($camera[0] + ".orthographic") 1; +select $temp; +fitPanel -selected; +print "camera square"; +}; + + +//orthoToPersp $camera[0] $camRotY $camRotX $camRotZ $camTranY $camTranX $camTranZ +global proc orthoToPersp() +{ +global string $camera[]; +global float $camRotY; +global float $camRotX; +global float $camRotZ; +global float $camTranY; +global float $camTranX; +global float $camTranZ; +setAttr ($camera[0] + ".rotateY") $camRotY; +setAttr ($camera[0] + ".rotateX") $camRotX; +setAttr ($camera[0] + ".rotateZ") $camRotZ; +setAttr ($camera[0] + ".translateY") $camTranY; +setAttr ($camera[0] + ".translateX") $camTranX; +setAttr ($camera[0] + ".translateZ") $camTranZ; +setAttr ($camera[0] + ".orthographic") 0; +}; + +global proc swapCamera(int $sway){ +global string $camera[]; +global float $camRotY; +global float $camRotX; +global float $camRotZ; +global float $camTranY; +global float $camTranX; +global float $camTranZ; +switch ($sway){ + +case 0: + perspToOrtho; + break; +case 1: + orthoToPersp; + break; +}; +};
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_BVContext.mel b/tools/MayaTools/Maya4.0/scripts/others/te_BVContext.mel new file mode 100644 index 0000000..e835468 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_BVContext.mel @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_BVContext.mel +// +// Description: Defines all the scripts required by the BVContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartBVLoop() +{ + //Start the BV context... + if ( ! `contextInfo -exists BVCtx` ) + { + BVContext BVCtx; + } + + setToolTo BVCtx; +} + +global proc te_MCB_SplitSelectedBV() +{ + //Call the API function. + BVSplitSelected(); +} + +global proc te_Delete_BVContext() +{ + if ( `contextInfo -exists BVCtx` ) + { + deleteUI -toolContext BVCtx; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_IntersectionContext.mel b/tools/MayaTools/Maya4.0/scripts/others/te_IntersectionContext.mel new file mode 100644 index 0000000..54561ff --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_IntersectionContext.mel @@ -0,0 +1,212 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_IntersectionContext.mel +// +// Description: Defines all the scripts required by the IntersectionContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartIntersection() +{ + //Start the Intersection context... + if ( ! `contextInfo -exists IntersectionCtx` ) + { + IntersectionContext IntersectionCtx; + } + + setToolTo IntersectionCtx; +} + +global string $gSelectedIntersection = ""; +global int $gIntersectionSelectionCallbackID = 0; +global string $gSelectedName; +global string $gTypeField; +global string $gIntersectionTypes[] = { "NoStop", "NWay", "FourWay", "NoStopN", "NWayN" }; + +global proc te_MCB_EditIntersection() +{ + global string $gSelectedName; + global int $gIntersectionSelectionCallbackID; + global string $gIntersectionTypes[]; + global string $gTypeField; + + if ( `window -exists TE_InteresctionEditor` ) + { + deleteUI -window TE_IntersectionEditor; + } + + window -rtf true -title "TE Road / Intersection Editor" TE_IntersectionEditor; + + columnLayout -adjustableColumn true; + + $gSelectedName = `textField -editable false -text "" -width 170`; + + $gTypeField = `optionMenu -label "Type" -width 170 -changeCommand ("te_MCB_IntersectionTypeChange( \"#1\" )")`; + + int $index; + int $size = size($gIntersectionTypes); + for ( $index = 0; $index < $size; $index++ ) + { + menuItem -label $gIntersectionTypes[ $index ]; + } + setParent ..; + + button -label "Create Road" -command ( "te_MCB_CreateRoadFromSelected()" ); + button -label "Show Whole Road" -command ( "te_MCB_ShowRoadFromSelected()" ); + button -label "Destroy Road" -command ( "te_MCB_DestroyRoadFromSelected()" ); + button -label "Set Intersection Start" -command ( "te_MCB_AddSelectedIntersectionToRoad( 0 )" ); + button -label "Set Intersection End" -command ( "te_MCB_AddSelectedIntersectionToRoad( 1 )" ); + separator; + button -label "Create Intersections" -command "te_MCB_StartIntersection()"; + + setParent ..; + + showWindow; + + //Create the selection change callback. + $gIntersectionSelectionCallbackID = `scriptJob -parent "TE_IntersectionEditor" -event "SelectionChanged" "te_UpdateIntersectionEditor()"`; + +} + +global proc te_MCB_IntersectionTypeChange( string $value ) +{ + global string $gSelectedIntersection; + + if ( $gSelectedIntersection != "" ) + { + setAttr ( $gSelectedIntersection + ".IntersectionType" ) -type "string" $value; + } +} + +global proc te_CloseIntersectionEditorWindow() +{ + global int $gIntersectionSelectionCallbackID; + + if ( `window -exists TE_InteresctionEditor` ) + { + deleteUI -window TE_IntersectionEditor; + } + + $gIntersectionSelectionCallbackID = 0; +} + +global proc te_UpdateIntersectionEditor() +{ + global string $gSelectedIntersection; + global string $gSelectedName; + global string $gTypeField; + global string $gIntersectionTypes[]; + + string $selectedObjects[] = `ls -sl -dag`; + string $selectedObjectName = $selectedObjects[0]; + string $selectedNodeType; + + if ( $selectedObjectName != "" ) + { + //There is something selected + + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "transform" ) + { + //We don't want the transform, we want the child node. + string $children[] = `listRelatives -c $selectedObjectName`; + $selectedObjectName = $children[0]; + } + + if ( $selectedObjectName != "" ) + { + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "IntersectionLocatorNode" ) + { + //We're in business + textField -edit -text $selectedObjectName $gSelectedName; + + string $value = `getAttr ( $selectedObjectName + ".IntersectionType" )`; + + //Which index is this string? + int $size = size( $gIntersectionTypes ); + int $index; + + for ( $index = 0; $index < $size; $index++ ) + { + if ( $gIntersectionTypes[ $index ] == $value ) + { + optionMenu -edit -sl ($index + 1) $gTypeField; + break; + } + } + + if ( $index == $size ) + { + //This node had no proper setting. Resetting it. + warning "Node had invalid type setting. Correcting to default type"; + + optionMenu -edit -sl 1 $gTypeField; + setAttr ( $selectedObjectName + ".IntersectionType" ) -type "string" $gIntersectionTypes[ 0 ]; + } + + $gSelectedIntersection = $selectedObjectName; + return; + } + else if ( $selectedNodeType == "mesh" ) + { + //This is for adding road to the selected intersection. Do not unselect the intersection. + string $whichRoad[] = `listAttr -st teWhichRoad $selectedObjectName`; + + if ( size( $whichRoad ) ) + { + return; + } + } + } + } + + textField -edit -text "" $gSelectedName; + $gSelectedIntersection = ""; + +} + + + +global proc te_MCB_CreateRoadFromSelected() +{ + TE_CreateRoad(); +} + +global proc te_MCB_ShowRoadFromSelected() +{ + TE_ShowRoad(); +} + +global proc te_MCB_DestroyRoadFromSelected() +{ + TE_DestroyRoad(); +} + +global proc te_MCB_AddSelectedIntersectionToRoad( int $isEnd ) +{ + global string $gSelectedIntersection; + + TE_AddIntersectionToRoad( $gSelectedIntersection, $isEnd ); +} + +global proc te_Delete_IntersectionContext() +{ + if ( `contextInfo -exists IntersectionCtx` ) + { + deleteUI -toolContext IntersectionCtx; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_PPContext.mel b/tools/MayaTools/Maya4.0/scripts/others/te_PPContext.mel new file mode 100644 index 0000000..a8cc63f --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_PPContext.mel @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_PPContext.mel +// +// Description: Defines all the scripts required by the PPContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartPPLoop() +{ + //Start the PP context... + if ( ! `contextInfo -exists PPCtx` ) + { + PPContext PPCtx; + } + + setToolTo PPCtx; +} + +global proc te_MCB_SplitSelectedPP() +{ + //Call the API function. + PPSplitSelected(); +} + +global proc te_Delete_PPContext() +{ + if ( `contextInfo -exists PPCtx` ) + { + deleteUI -toolContext PPCtx; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_cleanup.mel b/tools/MayaTools/Maya4.0/scripts/others/te_cleanup.mel new file mode 100644 index 0000000..21f39d3 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_cleanup.mel @@ -0,0 +1,12 @@ +te_Delete_TreeLineContext(); +te_Delete_BVContext(); +te_Delete_PPContext(); +te_Delete_IntersectionContext(); +te_CloseIntersectionEditorWindow(); + +if ( `menu -exists te_MainMenu` ) +{ + deleteUI te_MainMenu; + + flushUndo; +} diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_editorwindow.mel b/tools/MayaTools/Maya4.0/scripts/others/te_editorwindow.mel new file mode 100644 index 0000000..1504a52 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_editorwindow.mel @@ -0,0 +1,335 @@ +//Constant +global int $gMAX_LANES = 4; + +global string $gSelectedName; +global string $gOriginField; +global string $gRoadField; +global string $gTopField; +global string $gBottomField; +global string $gLanesField; +global string $gShoulderField; + +global int $gSelectionScriptJob; + +global string $gSelectedObjectName; + +global proc teOpenEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gLanesField; + global string $gShoulderField; + global int $gMAX_LANES; + + + if ( `window -exists TE_TileEditor` ) + { + deleteUI -window TE_TileEditor; + } + + window -rtf true -title "TE Tile Editor" TE_TileEditor; + + columnLayout -adjustableColumn true; + + string $selectedRow = `rowLayout -numberOfColumns 3 -columnWidth 1 170`; + $gSelectedName = `textField -editable false -text "" -width 170`; + string $selectedButton = `button -label "Select Mesh" -command ("teSelectMesh()")`; + string $doneButton = `button -label "Done" -command ("teDoneEditingMesh()")`; + + setParent ..; + + string $originRow = `rowLayout -numberOfColumns 2`; + string $originButton = `button -label "Set Origin" -command ("teSelectOrigin()")`; + $gOriginField = `intField -value -1 -editable false`; + setParent ..; + + + string $roadRow = `rowLayout -numberOfColumns 2`; + string $roadButton = `button -label "Set Road Dir" -command ("teSelectRoadDir()")`; + $gRoadField = `intField -value -1 -editable false`; + setParent ..; + + + string $topRow = `rowLayout -numberOfColumns 2`; + string $topButton = `button -label "Set TOP" -command ("teSelectTOP()")`; + $gTopField = `intField -value -1 -editable false`; + setParent ..; + + + string $bottomRow = `rowLayout -numberOfColumns 2`; + string $bottomButton = `button -label "Set BOTTOM" -command ("teSelectBOTTOM()")`; + $gBottomField = `intField -value -1 -editable false`; + setParent ..; + + //The following #1 is a trick that the scripting system converts into the value of the field/control... + string $laneRow = `rowLayout -numberOfColumns 2`; + string $laneLabel = `text -label "Num. Lanes" -align "center"`; + $gLanesField = `intField -value 1 -min 0 -max $gMAX_LANES -step 1 -editable true -changeCommand ("teSetNumLanes(#1)")`; + setParent ..; + + $gShoulderField = `checkBox -label "Has Shoulder" -value true -changeCommand ("teSetShoulder(#1)")`; + + setParent ..; //columnLayout + + showWindow; +} + +global proc teCloseEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gLanesField; + global string $gShoulderField; + + global int $gSelectionScriptJob; + + if ( `window -exists TE_TileEditor` ) + { + deleteUI -window TE_TileEditor; + } + + $gSelectedName = ""; + $gOriginField = ""; + $gRoadField = ""; + $gTopField = ""; + $gBottomField = ""; + $gLanesField = ""; + $gShoulderField = ""; + + $gSelectionScriptJob = 0; +} + +global proc teSelectMesh() +{ + global string $gSelectedName; + global int $gSelectionScriptJob; + global string $gSelectedObjectName; + + //May want to inform the TrackEditor of this selection if it is good. + string $selectedObjects[] = `ls -sl -dag`; + string $selectedObjectName = $selectedObjects[0]; + string $selectedNodeType; + + if ( $selectedObjectName != "" ) + { + //There is something selected + + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "transform" ) + { + //We don't want the transform, we want the child node. + $selectedObjectName = $selectedObjects[1]; + } + + if ( $selectedObjectName != "" ) + { + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "mesh" ) + { + //We're in business + textField -edit -text $selectedObjectName $gSelectedName; + + teSwitchToVertexSelection( 1 ); //Turn on vertex selection. + + teAddSettingsToObject( $selectedObjectName ); + + $gSelectedObjectName = $selectedObjectName; + + teUpdateEditorWindow(); + } + } + } +} + +global proc teUpdateEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gSelectedObjectName; + global string $gLanesField; + global string $gShoulderField; + + //Update the fields according to the selected object. + + int $valsSet = false; + + if ( $gSelectedObjectName != "" ) + { + string $attr[] = `listAttr -st teOrigin $gSelectedObjectName`; + + if ( $attr[0] != "" ) + { + textField -edit -text $gSelectedObjectName $gSelectedName; + + float $origin = `getAttr ($gSelectedObjectName + ".teOrigin")`; + intField -edit -value $origin $gOriginField; + + float $road = `getAttr ($gSelectedObjectName + ".teRoad")`; + intField -edit -value $road $gRoadField; + + float $top = `getAttr ($gSelectedObjectName + ".teTop")`; + intField -edit -value $top $gTopField; + + float $bottom = `getAttr ($gSelectedObjectName + ".teBottom")`; + intField -edit -value $bottom $gBottomField; + + int $lanes = `getAttr ($gSelectedObjectName + ".teLanes")`; + intField -edit -value $lanes $gLanesField; + + int $hasShoulder = `getAttr ($gSelectedObjectName + ".teShoulder")`; + checkBox -edit -value $hasShoulder $gShoulderField; + + $valsSet = 1; + } + } + + if ( !$valsSet ) + { + textField -edit -text "" $gSelectedName; + + intField -edit -value -1 $gOriginField; + intField -edit -value -1 $gRoadField; + intField -edit -value -1 $gTopField; + intField -edit -value -1 $gBottomField; + intField -edit -value 0 $gLanesField; + checkBox -edit -value false $gShoulderField; + } +} + +global proc teSwitchToVertexSelection( int $on ) +{ + if ( $on ) + { + selectMode -component; + selectType -vertex true; + } + else + { + selectMode -object; + } +} + +global proc teDoneEditingMesh() +{ + global string $gSelectedObjectName; + + $gSelectedObjectName = ""; //Clear the selection. + + teSwitchToVertexSelection( 0 ); //Turn on vertex selection. + + teUpdateEditorWindow(); +} + +global proc teAddSettingsToObject( string $objectName ) +{ + string $attr[] = `listAttr -st teOrigin $objectName`; + + if ( $attr[0] == "" ) + { + addAttr -ln teOrigin -sn teO -at long -defaultValue -1 $objectName; + + addAttr -ln teRoad -sn teR -at long -defaultValue -1 $objectName; + + addAttr -ln teTop -sn teT -at long -defaultValue -1 $objectName; + + addAttr -ln teBottom -sn teB -at long -defaultValue -1 $objectName; + + addAttr -ln teLanes -sn teL -at long -defaultValue 1 $objectName; + + addAttr -ln teShoulder -sn teS -at bool -defaultValue true $objectName; + + //This is for connecting to roads + addAttr -ln teWhichRoad -sn teWR -at message $objectName; + + //This is a hint of the type + addAttr -ln teTypeHint -sn teTH -at long -defaultValue -1 $objectName; + } +} + +global proc teSelectOrigin() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teOrigin" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectRoadDir() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teRoad" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectTOP() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teTop" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectBOTTOM() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teBottom" ) $pos; + } + + teUpdateEditorWindow(); +} + + +global proc teSetNumLanes( int $numLanes ) +{ + global string $gSelectedObjectName; + + if ( $gSelectedObjectName != "" ) + { + setAttr ( $gSelectedObjectName + ".teLanes" ) $numLanes; + } +} + +global proc teSetShoulder( int $hasShoulder ) +{ + global string $gSelectedObjectName; + + if ( $gSelectedObjectName != "" ) + { + setAttr ( $gSelectedObjectName + ".teShoulder" ) $hasShoulder; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_globals.mel b/tools/MayaTools/Maya4.0/scripts/others/te_globals.mel new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_globals.mel @@ -0,0 +1 @@ + diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_main.mel b/tools/MayaTools/Maya4.0/scripts/others/te_main.mel new file mode 100644 index 0000000..6a97582 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_main.mel @@ -0,0 +1,195 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// TE_main.mel +// +// Description: Installs the Terrain Editor (TE) interface. +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created Apr 11, 2001 -- bkusy +// + Stolen & Adapted -- CBrisebois +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// t e _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// t e _ M C B _ A b o u t +// +// Synopsis: Display an About Terrain Editor window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_MCB_About() +{ +// string $pluginVersion = `te_GetVersion`; + + string $pluginVersion = "2.0"; + + string $message = ( "\nSimpsons Road Rage Terrain Editor.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About Terrain Editor" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// t e _ d o M a i n M e n u I t e m s +// +// Synopsis: Creates the TE menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_doMainMenuItems( string $menu ) +{ + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Bounding Fences" -sm true; + + menuItem -label "Create fence line" -command "te_MCB_StartBVLoop()"; + + menuItem -label "Split Fence(s)" -command "te_MCB_SplitSelectedBV()"; + + setParent -menu ..; + + menuItem -label "Pedestrian Paths" -sm true; + + menuItem -label "Create path line" -command "te_MCB_StartPPLoop()"; + + menuItem -label "Split Path(s)" -command "te_MCB_SplitSelectedPP()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Track Editor" -sm true; + + radioMenuItemCollection; + + menuItem -label "Off" -radioButton on -command "TE_StateChange(0)"; + + menuItem -label "Edit Mode" -radioButton off -command "TE_StateChange(1)"; + + menuItem -label "Display Mode" -radioButton off -command "TE_StateChange(2)"; + + menuItem -divider true; + + menuItem -label "Create Intersections" -command "te_MCB_StartIntersection()"; + + menuItem -label "Edit Roads / Intersections" -command "te_MCB_EditIntersection()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Tree Line Tool" -allowOptionBoxes true -sm true; + + menuItem -label "Create Tree Lines" -command "te_MCB_CreateTreeLines()"; + + menuItem -label "Options" -optionBox true -command "te_MCB_TreelineOptions()"; + + menuItem -divider true; + + menuItem -label "Snap Selected Treelines" -command "te_MCB_SnapTreelines()"; + + menuItem -divider true; + + menuItem -label "Convert Treelines to Geometry" -command "te_MCB_ConvertToGeometry()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Export" -command "te_MCB_Export()"; + + menuItem -optionBox true -command "TE_ExportOptions()"; + + menuItem -divider true; + + menuItem -label "About" -command "te_MCB_About()"; + + setParent -m ..; +} + +//----------------------------------------------------------------------------- +// t e _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_InstallUI() +{ + + global string $gMainWindow; + + // + // Install TE menu as a root menu. + // + if ( `menu -exists te_MainMenu` ) deleteUI te_MainMenu; + menu -label "Track Editor" -allowOptionBoxes true -parent $gMainWindow te_MainMenu; + + te_doMainMenuItems "te_MainMenu"; +} + +global proc te_MCB_Export() +{ + $whichCtx = `currentCtx`; + + if ( $whichCtx != "" ) + { + ctxCompletion; + } + + TE_Export(); +} + +source "te_globals.mel"; +source "te_setup.mel"; +source "te_BVContext.mel"; +source "te_PPContext.mel"; +source "te_treelineContext.mel"; +source "te_IntersectionContext.mel"; +source "te_editorWindow.mel"; +source "AETEShowRoadSegButton.mel"; + +evalDeferred "te_InstallUI";
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_setup.mel b/tools/MayaTools/Maya4.0/scripts/others/te_setup.mel new file mode 100644 index 0000000..d5ca442 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_setup.mel @@ -0,0 +1,15 @@ +//Create the TrackEditorNode. + + +global proc te_Create_TrackEditorNode() +{ + if ( !(`objExists TrackEditorNode`) ) + { + createNode "transform" -n "TrackEditorNode"; + createNode "transform" -n "Fences" -p "TrackEditorNode"; + createNode "transform" -n "Roads" -p "TrackEditorNode"; + createNode "transform" -n "Intersections" -p "TrackEditorNode"; + createNode "transform" -n "Treelines" -p "TrackEditorNode"; + createNode "transform" -n "PedPaths" -p "TrackEditorNode"; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/te_treelineContext.mel b/tools/MayaTools/Maya4.0/scripts/others/te_treelineContext.mel new file mode 100644 index 0000000..c8120ab --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/te_treelineContext.mel @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_treelineContext.mel +// +// Description: Defines all the scripts required by the TreeLineContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the tree line context tool. + +global proc te_MCB_CreateTreeLines() +{ + //Start the tree line context... + if ( ! `contextInfo -exists TreeLineCtx` ) + { + TreeLineContext TreeLineCtx; + } + + setToolTo TreeLineCtx; +} + +global proc te_Delete_TreeLineContext() +{ + if ( `contextInfo -exists TreeLineCtx` ) + { + deleteUI -toolContext TreeLineCtx; + } +} + +global proc te_MCB_SnapTreelines() +{ + TE_SnapSelectedTreelines(); +} + +global proc te_MCB_ConvertToGeometry() +{ + string $whichCtx = `currentCtx`; + + if ( $whichCtx == "TreeLineCtx" ) + { + ctxAbort; + } + + TE_ConvertTreelineToGeometry(); +} + +global int $gDeleteTreelines = true; + +global proc te_MCB_TreelineOptions() +{ + global int $gDeleteTreelines; + + if ( `window -exists TE_TreelineOptions` ) + { + deleteUI -window TE_TreelineOptions; + } + + window -rtf true -title "TE Treeline Options" TE_TreelineOptions; + + columnLayout -adjustableColumn true; + + checkBox -label "Delete Treelines" -value $gDeleteTreelines -cc "te_BCB_SetDeleteTreelines(#1)"; + + setParent ..; + + showWindow; +} + +global proc te_BCB_SetDeleteTreelines( int $delete ) +{ + global int $gDeleteTreelines; + + $gDeleteTreelines = $delete; + TE_SetDeleteTreeline($delete); +} diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_cleanup.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_cleanup.mel new file mode 100644 index 0000000..1b2f42c --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_cleanup.mel @@ -0,0 +1,11 @@ + +if ( `menu -exists wb_MainMenu` ) +{ + deleteUI wb_MainMenu; + deleteShelfTab ("WorldBuilder"); + + wb_SplinesCleanup(); + wb_CoinSplinesCleanup(); + + flushUndo; +} diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_coinsplines.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_coinsplines.mel new file mode 100644 index 0000000..750eb3e --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_coinsplines.mel @@ -0,0 +1,53 @@ +global int $gCoinSplineCompleteCB = -1; + +global proc wb_MCB_CreateCoinPath() +{ + global int $gCoinSplineCompleteCB; + + if ( !`contextInfo -exists CoinSplineCtx` ) + { + curveCVCtx -degree 3 -me true -un true CoinSplineCtx; + print "create\n"; + } + else + { + string $currentCtx = `currentCtx`; + + if ( $currentCtx == "CoinSplineCtx" ) + { + print "complete\n"; + ctxCompletion; + + wb_CB_CoinSplineComplete(); + } + } + + print "select\n"; + setToolTo CoinSplineCtx; + + $gCoinSplineCompleteCB = `scriptJob -ro 1 -p "WorldBuilder" -e "ToolChanged" wb_CB_CoinSplineComplete`; +} + +global proc wb_CB_CoinSplineComplete() +{ + print "complete callback\n"; + WB_CoinSplineComplete(); +} + +global proc wb_CoinSplinesCleanup() +{ + print "clean\n"; + global int $gCoinSplineCompleteCB; + + if ( $gCoinSplineCompleteCB != -1 ) + { + scriptJob -k $gCoinSplineCompleteCB; + print "kill job\n"; + } + + if ( `contextInfo -exists CoinSplineCtx` ) + { + print "delete ui\n"; + deleteUI -tc CoinSplineCtx; + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_locator.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_locator.mel new file mode 100644 index 0000000..0b46abb --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_locator.mel @@ -0,0 +1,71 @@ +global float $gWB_Offset = 0; + +global proc wb_BCB_CreateLocator( string $type ) +{ + //Start the Locator context... + if ( ! `contextInfo -exists LocatorCtx` ) + { + LocatorContext LocatorCtx; + } + + WB_SetLocatorType($type); + + setToolTo LocatorCtx; +} + +global proc wb_MCB_SnapLocatorOptions() +{ + global float $gWB_Offset; + + if ( `window -exists wb_OptionWindow` ) deleteUI wb_OptionWindow; + + window -title "Snap Locator Options" wb_OptionWindow; + + columnLayout; + + rowLayout -nc 2; + + text -label "Offset (M):"; + + floatField -min -10.0 -max 10.0 -value $gWB_Offset -cc ("$gWB_Offset = #1"); + + setParent ..; + + button -label "snap locator" -command "WB_SnapLocator( $gWB_Offset )"; + + setParent ..; + + showWindow; +} + +global proc wb_BCB_AttachTriggers( string $name, int $isVisibler ) +{ + global int $gIsItVisibler; + + $gIsItVisibler = $isVisibler; + + //Start the Trigger context... + if ( ! `contextInfo -exists TriggerCtx` ) + { + TriggerContext TriggerCtx; + } + + select $name; + + WB_SelectObject( $name ); + + setToolTo TriggerCtx; +} + +global proc wb_LocatorCleanup() +{ + if ( `contextInfo -exists LocatorCtx` ) + { + deleteUI -tc LocatorCtx; + } + + if ( `contextInfo -exists TriggerCtx` ) + { + deleteUI -tc TriggerCtx; + } +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_main.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_main.mel new file mode 100644 index 0000000..8106946 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_main.mel @@ -0,0 +1,274 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// WB_main.mel +// +// Description: Installs the World Builder (WB) interface. +// As a convention all World Builder global procedures +// and global variables are prefixed with "wb_". All commands +// exposed through WB plugins are prefixed with "WB_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created Apr 11, 2001 -- bkusy +// + Stolen & Adapted -- CBrisebois +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// w b _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// w b _ M C B _ A b o u t +// +// Synopsis: Display an About World Builder window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_MCB_About() +{ + string $pluginVersion = "2.0"; + + string $message = ( "\nSimpsons Road Rage World Builder.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About World Builder" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// w b _ d o M a i n M e n u I w b m s +// +// Synopsis: Creates the WB menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_doMainMenuItems( string $menu ) +{ + global string $gMainWindow; + global float $gWB_Offset; + + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Display Levels" -sm true; + + menuItem -label "Event Locators" -checkBox true -command "WB_ChangeDisplay(0, #1)"; + + menuItem -label "Script Locators" -checkBox true -command "WB_ChangeDisplay(1, #1)"; + + menuItem -label "Generic Locators" -checkBox true -command "WB_ChangeDisplay(2, #1)"; + + menuItem -label "Car Start Locators" -checkBox true -command "WB_ChangeDisplay(3, #1)"; + + menuItem -label "Dynamic Zone Locators" -checkBox true -command "WB_ChangeDisplay(4, #1)"; + + menuItem -label "Occlusion Locators" -checkBox true -command "WB_ChangeDisplay(5, #1)"; + + menuItem -label "Interior Entrance Locators" -checkBox true -command "WB_ChangeDisplay(7, #1)"; + + menuItem -label "Directional Locators" -checkBox true -command "WB_ChangeDisplay(8, #1)"; + + menuItem -label "Action Locators" -checkBox true -command "WB_ChangeDisplay(9, #1)"; + + menuItem -label "FOV" -checkBox true -command "WB_ChangeDisplay(10, #1)"; + + menuItem -label "Breakable Camera" -checkBox true -command "WB_ChangeDisplay(11, #1)"; + + menuItem -label "Static Camera" -checkBox true -command "WB_ChangeDisplay(12, #1)"; + + menuItem -label "Ped Group" -checkBox true -command "WB_ChangeDisplay(13, #1)"; + + menuItem -divider true; + + menuItem -label "Trigger Volumes" -checkBox true -command "WB_ChangeDisplay(20, #1)"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Create Camera Path" -command "wb_MCB_CreateCameraPath()"; + + menuItem -label "Create Coin Path" -command "wb_MCB_CreateCoinPath()"; + + menuItem -divider true; + + menuItem -label "Set Prefix" -command "WB_SetPrefix()"; + + menuItem -divider true; + + menuItem -label "Snap Locator" -command "WB_SnapLocator( $gWB_Offset )"; + + menuItem -optionBox true -command "wb_MCB_SnapLocatorOptions()"; + + menuItem -divider true; + + menuItem -label "Export" -command "WB_Export()"; + + menuItem -optionBox true -command "WB_ExportOptions()"; + + menuItem -divider true; + + menuItem -label "About" -command "wb_MCB_About()"; + + setParent -m ..; + + if ( `shelfLayout -exists "WorldBuilder"` == 0 ) + { + addNewShelfTab "WorldBuilder"; + } + + //Delete all the old buttons (in case there was a change).. + string $buttons[] = `shelfLayout -q -ca WorldBuilder`; + + int $i; + + for ( $i = 0; $i < size($buttons); $i++ ) + { + deleteUI $buttons[ $i ]; + } + + //Create all the buttons required.. + shelfButton -c ("wb_BCB_CreateLocator(\"Event\")") + -p "WorldBuilder" + -i1 "eventlocator.bmp" + -ann "Create Event Locator" + -l "Event"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Script\")") + -p "WorldBuilder" + -i1 "scriptlocator.bmp" + -ann "Create Script Locator" + -l "Script"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Generic\")") + -p "WorldBuilder" + -i1 "genericlocator.bmp" + -ann "Create Generic Locator" + -l "Generic"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Car Start\")") + -p "WorldBuilder" + -i1 "carstartlocator.bmp" + -ann "Create Car Start Locator" + -l "Car Start"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Dynamic Zone\")") + -p "WorldBuilder" + -i1 "zonelocator.bmp" + -ann "Create Dynamic Zone Locator" + -l "Dynamic Zone"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Occlusion\")") + -p "WorldBuilder" + -i1 "occlusionlocator.bmp" + -ann "Create Occlusion Locator" + -l "Occlusion"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Interior Entrance\")") + -p "WorldBuilder" + -i1 "interiorlocator.bmp" + -ann "Create Interior Entrance Locator" + -l "Interior Entrance"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Directional\")") + -p "WorldBuilder" + -i1 "directionallocator.bmp" + -ann "Create Directional Locator" + -l "Directional"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Action\")") + -p "WorldBuilder" + -i1 "actionlocator.bmp" + -ann "Create Action Locator" + -l "Action"; + + shelfButton -c ("wb_BCB_CreateLocator(\"FOV\")") + -p "WorldBuilder" + -i1 "fovlocator.bmp" + -ann "Create FOV Locator" + -l "FOV"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Breakable Camera\")") + -p "WorldBuilder" + -i1 "breakablecameralocator.bmp" + -ann "Create Breakable Camera Locator" + -l "Breakable Camera"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Static Camera\")") + -p "WorldBuilder" + -i1 "staticcameralocator.bmp" + -ann "Create Static Camera Locator" + -l "Static Camera"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Ped Group\")") + -p "WorldBuilder" + -i1 "pedgrouplocator.bmp" + -ann "Create Ped Group Locator" + -l "Ped Group"; + +} + + +//----------------------------------------------------------------------------- +// w b _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_InstallUI() +{ + + global string $gMainWindow; + + // + // Install WB menu as a root menu. + // + if ( `menu -exists wb_MainMenu` ) deleteUI wb_MainMenu; + menu -label "World Builder" -allowOptionBoxes true -parent $gMainWindow wb_MainMenu; + + wb_doMainMenuItems "wb_MainMenu"; +} + +evalDeferred "wb_InstallUI"; + +source "wb_setup.mel"; +source "wb_locator.mel"; +source "wb_splines.mel"; +source "wb_coinsplines.mel"; +source "AEWBTriggerButton.mel"; +source "AEWBSelectTarget.mel";
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_setup.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_setup.mel new file mode 100644 index 0000000..9211390 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_setup.mel @@ -0,0 +1,6 @@ +//Create the WorldBuilderNode. + + +global proc wb_Create_WorldBuilderNode() +{ +}
\ No newline at end of file diff --git a/tools/MayaTools/Maya4.0/scripts/others/wb_splines.mel b/tools/MayaTools/Maya4.0/scripts/others/wb_splines.mel new file mode 100644 index 0000000..ab99858 --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/others/wb_splines.mel @@ -0,0 +1,46 @@ +global int $gSplineCompleteCB = -1; + +global proc wb_MCB_CreateCameraPath() +{ + global int $gSplineCompleteCB; + + if ( !`contextInfo -exists CameraSplineCtx` ) + { + curveCVCtx -degree 3 -me false -un true CameraSplineCtx; + } + else + { + string $currentCtx = `currentCtx`; + + if ( $currentCtx == "CameraSplineCtx" ) + { + ctxCompletion; + + wb_CB_SplineComplete(); + } + } + + setToolTo CameraSplineCtx; + + $gSplineCompleteCB = `scriptJob -ro 1 -p "WorldBuilder" -e "ToolChanged" wb_CB_SplineComplete`; +} + +global proc wb_CB_SplineComplete() +{ + WB_SplineComplete(); +} + +global proc wb_SplinesCleanup() +{ + global int $gSplineCompleteCB; + + if ( $gSplineCompleteCB != -1 ) + { + scriptJob -k $gSplineCompleteCB; + } + + if ( `contextInfo -exists CameraSplineCtx` ) + { + deleteUI -tc CameraSplineCtx; + } +} diff --git a/tools/MayaTools/Maya4.0/scripts/srr2rules.txt b/tools/MayaTools/Maya4.0/scripts/srr2rules.txt new file mode 100644 index 0000000..814be8f --- /dev/null +++ b/tools/MayaTools/Maya4.0/scripts/srr2rules.txt @@ -0,0 +1,13 @@ +rule +{ + severity 9 + if type tlMeshChunk + + rule + { + scope children + label "Mesh using lambert!" + if type tlPrimGroupChunk + require Shader != "lambert[0-9]+" + } +}
\ No newline at end of file diff --git a/tools/SearchReplace/SearchReplace.cpp b/tools/SearchReplace/SearchReplace.cpp new file mode 100644 index 0000000..f2fe3a9 --- /dev/null +++ b/tools/SearchReplace/SearchReplace.cpp @@ -0,0 +1,336 @@ +// SearchReplace.cpp : Defines the entry point for the console application. +// + +#include <assert.h> +#include <vector> + +class ReplacementTableEntry; + +std::vector<ReplacementTableEntry*> gReplacementTable; + +bool BuildReplacementTable( FILE* rulesFile ); +void RemoveNewLine( char* string ); +bool IsWhiteSpace( char* string ); +void ProcessSourceFile( FILE* sourceFile, FILE* targetFile ); + + + +class ReplacementTableEntry +{ + public: + + ReplacementTableEntry( const char* findString, const char* replaceString ); + ~ReplacementTableEntry(); + + char* mFindString; + char* mReplaceString; +}; + + +ReplacementTableEntry::ReplacementTableEntry +( + const char* findString, + const char* replaceString +) +: +mFindString( 0 ), +mReplaceString( 0 ) +{ + assert( findString ); + assert( replaceString ); + + mFindString = new char[strlen(findString)+1]; + strcpy( mFindString, findString ); + + mReplaceString = new char[strlen(replaceString)+1]; + strcpy( mReplaceString, replaceString ); +} + +ReplacementTableEntry::~ReplacementTableEntry() +{ + delete [] mFindString; + delete [] mReplaceString; +} + + + +//============================================================================== +// int main +//============================================================================== +// +// Description: +// +// Parameters: +// +// Return: +// +//============================================================================== +int main(int argc, char* argv[]) +{ + // Validate command line arguments + assert( argc == 4 ); + + const char* rulesName = argv[1]; + const char* sourceName = argv[2]; + const char* targetName = argv[3]; + + // Open rules file + FILE* rulesFile = fopen( rulesName, "rt" ); + + if( rulesFile == NULL ) + { + printf( "Failed to open rules file: %s\n", rulesName ); + return( 0 ); + } + + // Build search and replace table + bool result = BuildReplacementTable( rulesFile ); + + // Close rules file + fclose( rulesFile ); + + + // Open source file + FILE* sourceFile = fopen( sourceName, "rt" ); + + if( sourceFile == NULL ) + { + fclose( rulesFile ); + printf( "Failed to open source file: %s\n", sourceName ); + return( 0 ); + } + + // Open target file + FILE* targetFile = fopen( targetName, "wt" ); + + if( targetFile == NULL ) + { + fclose( rulesFile ); + fclose( sourceFile ); + printf( "Failed to open target file: %s\n", targetName ); + return( 0 ); + } + + // Process source file + + ProcessSourceFile( sourceFile, targetFile ); + + fclose( sourceFile ); + fclose( targetFile ); + + + // Clean up + std::vector<ReplacementTableEntry*>::const_iterator iter = gReplacementTable.begin(); + + for( ; iter != gReplacementTable.end(); ++iter ) + { + ReplacementTableEntry* entry = (*iter); + + delete entry; + } + + gReplacementTable.clear(); + + return 0; +} + + +//============================================================================== +// bool BuildReplacementTable +//============================================================================== +// +// Description: +// +// Parameters: +// +// Return: +// +//============================================================================== +bool BuildReplacementTable( FILE* rulesFile ) +{ + // Get the next line from the file + + int lineCount = 0; + + while( 1 ) + { + const int BUFFER_SIZE = 512; + char* fgetsResult; + char lineBuffer[BUFFER_SIZE]; + + do + { if( feof( rulesFile ) ) + { + return( true ); + } + + fgetsResult = fgets( lineBuffer, BUFFER_SIZE, rulesFile ); + ++lineCount; + } + while( IsWhiteSpace( lineBuffer ) == true ); + + char findString[BUFFER_SIZE]; + strcpy( findString, lineBuffer ); + RemoveNewLine( findString ); + + + do + { + if( feof( rulesFile ) ) + { + printf( "Error in rules file, missing replace string (line: %d)\n", lineCount ); + return( false ); + } + + fgetsResult = fgets( lineBuffer, BUFFER_SIZE, rulesFile ); + ++lineCount; + } + while( IsWhiteSpace( lineBuffer ) == true ); + + char replaceString[BUFFER_SIZE]; + strcpy( replaceString, lineBuffer ); + RemoveNewLine( replaceString ); + + // Create Entry + // + ReplacementTableEntry* entry = new ReplacementTableEntry( findString, replaceString ); + gReplacementTable.push_back( entry ); + } +} + + +//============================================================================== +// void RemoveNewLine +//============================================================================== +// +// Description: +// +// Parameters: +// +// Return: +// +//============================================================================== +void RemoveNewLine( char* string ) +{ + assert( string ); + + int length = strlen( string ); + + int i; + for( i = 0; i < length; ++i ) + { + if( '\n' == string[i] ) + { + string[i] = '\0'; + } + } +} + + +//============================================================================== +// bool IsWhiteSpace +//============================================================================== +// +// Description: +// +// Parameters: +// +// Return: +// +//============================================================================== +bool IsWhiteSpace( char* string ) +{ + assert( string ); + + int length = strlen( string ); + + int i; + for( i = 0; i < length; ++i ) + { + if( (string[i] != '\n') && (string[i] != ' ') ) + { + return( false ); + } + } + + return( true ); +} + + +//============================================================================== +// void ProcessSourceFile +//============================================================================== +// +// Description: +// +// Parameters: +// +// Return: +// +//============================================================================== +void ProcessSourceFile( FILE* sourceFile, FILE* targetFile ) +{ + int lineNumber = 0; + while( !feof( sourceFile ) ) + { + // Read in a line from the source + const int BUFFER_SIZE = 1024; + char* fgetsResult; + char sourceBuffer[BUFFER_SIZE]; + char targetBuffer[BUFFER_SIZE]; + + fgetsResult = fgets( sourceBuffer, BUFFER_SIZE, sourceFile ); + strcpy( targetBuffer, sourceBuffer ); + ++lineNumber; + + // Iterate through the find strings for a match + std::vector<ReplacementTableEntry*>::const_iterator iter = gReplacementTable.begin(); + + for( ; iter != gReplacementTable.end(); ++iter ) + { + ReplacementTableEntry* entry = (*iter); + + char* start = sourceBuffer; + char* targetPos = targetBuffer; + char* found = NULL; + + do + { + found = strstr( start, entry->mFindString ); + + // Replace if found + if( found != NULL ) + { + // Copy over the prefix + memcpy(targetPos, start, found - start ); + targetPos += found - start; + + // Copy over the replacement string + memcpy(targetPos, entry->mReplaceString, strlen( entry->mReplaceString ) ); + targetPos += strlen( entry->mReplaceString ); + start = found + strlen( entry->mFindString ); + + // Copy over the postfix + memcpy( targetPos, start, strlen(start) ); + + // NULL terminate + char* term = targetPos + strlen(start); + *term = '\0'; + } + } + while( found != NULL ); + + // The target now becomes the source to preserve any replacements. + strcpy( sourceBuffer, targetBuffer ); + } + + // Write out line to target + fputs( targetBuffer, targetFile ); + } + + + + + + +}
\ No newline at end of file diff --git a/tools/SearchReplace/SearchReplace.dsp b/tools/SearchReplace/SearchReplace.dsp new file mode 100644 index 0000000..6e15a4e --- /dev/null +++ b/tools/SearchReplace/SearchReplace.dsp @@ -0,0 +1,97 @@ +# Microsoft Developer Studio Project File - Name="SearchReplace" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=SearchReplace - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "SearchReplace.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "SearchReplace.mak" CFG="SearchReplace - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "SearchReplace - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "SearchReplace - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "SearchReplace - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "RAD_WIN32" /D "RAD_RELEASE" /Yu"stdafx.h" /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "SearchReplace - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\game\libs\radcore\inc" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "RAD_WIN32" /D "RAD_DEBUG" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "SearchReplace - Win32 Release" +# Name "SearchReplace - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\SearchReplace.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# End Target +# End Project diff --git a/tools/SearchReplace/SearchReplace.dsw b/tools/SearchReplace/SearchReplace.dsw new file mode 100644 index 0000000..d28da6e --- /dev/null +++ b/tools/SearchReplace/SearchReplace.dsw @@ -0,0 +1,32 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "SearchReplace"=.\SearchReplace.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name radcore + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/tools/SectorTable/Release/SectorTable.exe b/tools/SectorTable/Release/SectorTable.exe Binary files differnew file mode 100644 index 0000000..bedcb51 --- /dev/null +++ b/tools/SectorTable/Release/SectorTable.exe diff --git a/tools/SectorTable/SectorTable.cpp b/tools/SectorTable/SectorTable.cpp new file mode 100644 index 0000000..41cd895 --- /dev/null +++ b/tools/SectorTable/SectorTable.cpp @@ -0,0 +1,121 @@ +// SectorTable.cpp : Defines the entry point for the console application. +// + +#include "stdafx.h" +#include <tlentity.hpp> + +int _tmain(int argc, _TCHAR* argv[]) +{ + const int NameCount = 75; + char* sectorNames[ NameCount ] = { + "l1r1.p3d", "l1r2.p3d", "l1r3.p3d", "l1r4a.p3d", "l1r4b.p3d", "l1r6.p3d", "l1r7.p3d", + "l1z1.p3d", "l1z2.p3d", "l1z3.p3d", "l1z4.p3d", "l1z6.p3d", "l1z7.p3d", + "l2r1.p3d", "l2r2.p3d", "l2r3.p3d", "l2r4.p3d", + "l2z1.p3d", "l2z2.p3d", "l2z3.p3d", "l2z4.p3d", + "l3r1.p3d", "l3r2.p3d", "l3r3.p3d", "l3r4.p3d", "l3r5.p3d", + "l3z1.p3d", "l3z2.p3d", "l3z3.p3d", "l3z4.p3d", "l3z5.p3d", + "l4r1.p3d", "l4r2.p3d", "l4r3.p3d", "l4r4a.p3d", "l4r4b.p3d", "l4r6.p3d", "l4r7.p3d", + "l4z1.p3d", "l4z2.p3d", "l4z3.p3d", "l4z4.p3d", "l4z6.p3d", "l4z7.p3d", + "l5r1.p3d", "l5r2.p3d", "l5r3.p3d", "l5r4.p3d", + "l5z1.p3d", "l5z2.p3d", "l5z3.p3d", "l5z4.p3d", + "l6r1.p3d", "l6r2.p3d", "l6r3.p3d", "l6r4.p3d", "l6r5.p3d", + "l6z1.p3d", "l6z2.p3d", "l6z3.p3d", "l6z4.p3d", "l6z5.p3d", + "l7r1.p3d", "l7r2.p3d", "l7r3.p3d", "l7r4a.p3d", "l7r4b.p3d", "l7r6.p3d", "l7r7.p3d", + "l7z1.p3d", "l7z2.p3d", "l7z3.p3d", "l7z4.p3d", "l7z6.p3d", "l7z7.p3d" }; + + char* typeStr[ 4 ] = { "unsigned char", "unsigned short", "int", "TLUID" }; + TLUID sectorIDs[ NameCount ]; + for( int i = 0; i < NameCount; ++i ) + { + sectorIDs[ i ] = tlEntity::MakeUID( sectorNames[ i ] ); + } + + // Check for dups in the lower order bits. + bool noDups = true; + int type = 0; + int mask = 0xFF; + for( int i = 0; ( i < NameCount - 1 ) && ( noDups ); ++i ) + { + char first = (char)( sectorIDs[ i ] & mask ); + for( int j = i + 1; j < NameCount; ++j ) + { + char second = (char)( sectorIDs[ j ] & mask ); + if( first == second ) + { + noDups = false; + break; + } + } + } + if( !noDups ) + { + ++type; + noDups = true; + mask = 0xFFFF; + for( int i = 0; ( i < NameCount - 1 ) && ( noDups ); ++i ) + { + short first = (short)( sectorIDs[ i ] & mask ); + for( int j = i + 1; j < NameCount; ++j ) + { + short second = (short)( sectorIDs[ j ] & mask ); + if( first == second ) + { + noDups = false; + break; + } + } + } + } + if( !noDups ) + { + ++type; + noDups = true; + mask = 0xFFFFFFFF; + for( int i = 0; ( i < NameCount - 1 ) && ( noDups ); ++i ) + { + int first = (int)( sectorIDs[ i ] & mask ); + for( int j = i + 1; j < NameCount; ++j ) + { + int second = (int)( sectorIDs[ j ] & mask ); + if( first == second ) + { + noDups = false; + break; + } + } + } + } + if( !noDups ) + { + ++type; + } + + printf( "// Auto generated with SectorTable.\n" ); + printf( "struct SectorMap\n{\n %s Sector;\n char CurIndex;\n};\n\n", typeStr[ type ] ); + printf( "static const int NUM_SECTORS = %d;\n\n", NameCount ); + printf( "SectorMap sSectorMap[ NUM_SECTORS ] = {\n" ); + for( int i = 0; i < NameCount; ++i ) + { + TLUID id = tlEntity::MakeUID( sectorNames[ i ] ); + unsigned hi = (unsigned)( id >> 32 ); + unsigned lo = (unsigned)( id & 0xFFFFFFFF ); + printf( "{ 0x" ); + switch( type ) + { + case 0: + printf("%02X", lo & 0xFF ); + break; + case 1: + printf("%04X", lo & 0xFFFF ); + break; + case 2: + printf("%08X", lo ); + break; + default: + printf( "%08X%08X", hi, lo ); + break; + } + printf( ", 0 }%s //%s\n", i != NameCount -1 ? ", " : " };", sectorNames[ i ] ); + } + return 0; +}
\ No newline at end of file diff --git a/tools/SectorTable/SectorTable.sln b/tools/SectorTable/SectorTable.sln new file mode 100644 index 0000000..c40d4c8 --- /dev/null +++ b/tools/SectorTable/SectorTable.sln @@ -0,0 +1,51 @@ +Microsoft Visual Studio Solution File, Format Version 7.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib", "..\..\game\libs\pure3d\toollib\toollib.vcproj", "{A224C960-67EC-49C2-8171-9FA441C7634D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SectorTable", "SectorTable.vcproj", "{B316572B-39EC-4EB1-B40D-E62D1B033F52}" +EndProject +Global + GlobalSection(SourceCodeControl) = preSolution + SccNumberOfProjects = 1 + SccProjectUniqueName0 = ..\\..\\game\\libs\\pure3d\\toollib\\toollib.vcproj + SccProjectName0 = Perforce\u0020Project + SccLocalPath0 = ..\\..\\game\\libs\\pure3d\\toollib + SccProvider0 = MSSCCI:Perforce\u0020SCM + CanCheckoutShared = true + EndGlobalSection + GlobalSection(SolutionConfiguration) = preSolution + ConfigName.0 = Debug + ConfigName.1 = Release + ConfigName.2 = Tools Debug + ConfigName.3 = Tools Release + ConfigName.4 = Tune + EndGlobalSection + GlobalSection(ProjectDependencies) = postSolution + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.0 = {A224C960-67EC-49C2-8171-9FA441C7634D} + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {A224C960-67EC-49C2-8171-9FA441C7634D}.Debug.ActiveCfg = Debug|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Debug.Build.0 = Debug|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Release.ActiveCfg = Release|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Release.Build.0 = Release|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tools Debug.ActiveCfg = Tools Debug|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tools Debug.Build.0 = Tools Debug|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tools Release.ActiveCfg = Tools Release|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tools Release.Build.0 = Tools Release|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tune.ActiveCfg = Tools Release|Win32 + {A224C960-67EC-49C2-8171-9FA441C7634D}.Tune.Build.0 = Tools Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Debug.ActiveCfg = Debug|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Debug.Build.0 = Debug|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Release.ActiveCfg = Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Release.Build.0 = Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tools Debug.ActiveCfg = Debug|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tools Debug.Build.0 = Debug|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tools Release.ActiveCfg = Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tools Release.Build.0 = Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tune.ActiveCfg = Release|Win32 + {B316572B-39EC-4EB1-B40D-E62D1B033F52}.Tune.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/tools/SectorTable/SectorTable.vcproj b/tools/SectorTable/SectorTable.vcproj new file mode 100644 index 0000000..be79730 --- /dev/null +++ b/tools/SectorTable/SectorTable.vcproj @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="SectorTable" + ProjectGUID="{B316572B-39EC-4EB1-B40D-E62D1B033F52}" + Keyword="Win32Proj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="Debug" + IntermediateDirectory="Debug" + ConfigurationType="1" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\game\libs\pure3d\toollib\inc" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;RAD_PC;RAD_DEBUG;RAD_WIN32" + MinimalRebuild="TRUE" + BasicRuntimeChecks="3" + RuntimeLibrary="1" + UsePrecompiledHeader="0" + WarningLevel="3" + Detect64BitPortabilityProblems="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="$(OutDir)/SectorTable.exe" + LinkIncremental="2" + IgnoreDefaultLibraryNames="" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile="$(OutDir)/SectorTable.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="Release" + IntermediateDirectory="Release" + ConfigurationType="1" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + OmitFramePointers="TRUE" + AdditionalIncludeDirectories="..\..\game\libs\pure3d\toollib\inc" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" + StringPooling="TRUE" + RuntimeLibrary="0" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="3" + WarningLevel="3" + Detect64BitPortabilityProblems="TRUE" + DebugInformationFormat="3"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="$(OutDir)/SectorTable.exe" + LinkIncremental="1" + GenerateDebugInformation="TRUE" + SubSystem="1" + OptimizeReferences="2" + EnableCOMDATFolding="2" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"> + <File + RelativePath="SectorTable.cpp"> + </File> + <File + RelativePath="stdafx.cpp"> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc"> + <File + RelativePath="stdafx.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/SectorTable/stdafx.cpp b/tools/SectorTable/stdafx.cpp new file mode 100644 index 0000000..0366889 --- /dev/null +++ b/tools/SectorTable/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// SectorTable.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/tools/SectorTable/stdafx.h b/tools/SectorTable/stdafx.h new file mode 100644 index 0000000..ea18047 --- /dev/null +++ b/tools/SectorTable/stdafx.h @@ -0,0 +1,12 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +#include <stdio.h> +#include <tchar.h> + +// TODO: reference additional headers your program requires here diff --git a/tools/UpgradeLog.htm b/tools/UpgradeLog.htm Binary files differnew file mode 100644 index 0000000..13925ea --- /dev/null +++ b/tools/UpgradeLog.htm diff --git a/tools/UpgradeLog2.htm b/tools/UpgradeLog2.htm Binary files differnew file mode 100644 index 0000000..e520582 --- /dev/null +++ b/tools/UpgradeLog2.htm diff --git a/tools/bin/make.exe b/tools/bin/make.exe Binary files differnew file mode 100644 index 0000000..28abc1e --- /dev/null +++ b/tools/bin/make.exe diff --git a/tools/bin/sh.exe b/tools/bin/sh.exe Binary files differnew file mode 100644 index 0000000..0313313 --- /dev/null +++ b/tools/bin/sh.exe diff --git a/tools/bin/tee.exe b/tools/bin/tee.exe Binary files differnew file mode 100644 index 0000000..7b32b2a --- /dev/null +++ b/tools/bin/tee.exe diff --git a/tools/globalcode/utility/GLExt.cpp b/tools/globalcode/utility/GLExt.cpp new file mode 100644 index 0000000..4b069ba --- /dev/null +++ b/tools/globalcode/utility/GLExt.cpp @@ -0,0 +1,1129 @@ +#include "precompiled/PCH.h" +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// GLExt.cpp +// +// Description: Functions that do drawing using the OpenGL API. +// +// Modification History: +// + Created Aug 21, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <windows.h> +#include <assert.h> + +#include <GL/gl.h> +#include <GL/glu.h> +#include <GL/glaux.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "GLExt.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +//============================================================================= +// GLExt::drawCamera3D +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx = 0.0f, double ty = 0.0f, double tz = 0.0f, float width = 1.0f ) +// +// Return: void +// +//============================================================================= +void GLExt::drawCamera3D( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + + //Set line width + glLineWidth( width ); + + glBegin( GL_LINES ); + //X-Z + glVertex3d(-0.5, 0.0, 0.5 ); + glVertex3d( 0.5, 0.0, 0.5 ); + + glVertex3d( 0.5, 0.0, 0.5 ); + glVertex3d( 0.5, 0.0, -0.5 ); + + glVertex3d( 0.5, 0.0, -0.5 ); + glVertex3d( -0.5, 0.0, -0.5 ); + + glVertex3d( -0.5, 0.0, -0.5 ); + glVertex3d( -0.5, 0.0, 0.5 ); + + glVertex3d( 0.125, 0.0, -0.5 ); + glVertex3d( 0.325, 0.0, -0.75 ); + + glVertex3d( 0.325, 0.0, -0.75 ); + glVertex3d( -0.325, 0.0, -0.75 ); + + glVertex3d( -0.325, 0.0, -0.75 ); + glVertex3d( -0.125, 0.0, -0.5 ); + + //Y-Z + glVertex3d( 0.0, -0.5, 0.5 ); + glVertex3d( 0.0, 0.5, 0.5 ); + + glVertex3d( 0.0, 0.5, 0.5 ); + glVertex3d( 0.0, 0.5, -0.5 ); + + glVertex3d( 0.0, 0.5, -0.5 ); + glVertex3d( 0.0, -0.5, -0.5 ); + + glVertex3d( 0.0, -0.5, -0.5 ); + glVertex3d( 0.0, -0.5, 0.5 ); + + glVertex3d( 0.0, 0.125, -0.5 ); + glVertex3d( 0.0, 0.325, -0.75 ); + + glVertex3d( 0.0, 0.325, -0.75 ); + glVertex3d( 0.0, -0.325, -0.75 ); + + glVertex3d( 0.0, -0.325, -0.75 ); + glVertex3d( 0.0, -0.125, -0.5 ); + glEnd(); + glPopMatrix(); + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + glLineWidth( oldWidth ); + + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w C r o s s H a i r 3 D +// +// Synopsis: Draws a camera symbol +// +// Parameters: scale - the scale to draw at. +// x - the x coordinate of the symbol. +// y - the y coordinate of the symbol. +// z - the z coordinate of the symbol. +// width - line width +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawCrossHair3D( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + + //Set line width + glLineWidth( width ); + + glBegin( GL_LINES ); + glVertex3d(-1.0, 0.0, 0.0 ); + glVertex3d( 1.0, 0.0, 0.0 ); + + glVertex3d( 0.0, -1.0, 0.0 ); + glVertex3d( 0.0, 1.0, 0.0 ); + + glVertex3d( 0.0, 0.0, -1.0 ); + glVertex3d( 0.0, 0.0, 1.0 ); + glEnd(); + glPopMatrix(); + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + glLineWidth( oldWidth ); + + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w C r o s s H a i r 3 D +// +// Synopsis: Draws a camera symbol +// +// Parameters: scale - the scale to draw the symbol at. +// p - where to draw the symbol. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawCrossHair3D( double scale, const MPoint& p, float width ) +{ + drawCrossHair3D( scale, p.x, p.y, p.z, width ); +} + + +//----------------------------------------------------------------------------- +// d r a w P y r a m i d +// +// Synopsis: Draws a pyramid using OpenGL. +// +// Parameters: scale - factor of scaling for the pyramid. +// tx - x position translation. +// ty - y position translation. +// tz - z position translation. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawPyramid( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_QUAD_STRIP ); + glVertex3d(0.5, 0 ,0.5); + glVertex3d(0, 1, 0); + glVertex3d(0.5, 0, -0.5); + glVertex3d(0, 1, 0); + glVertex3d(-0.5, 0, -0.5); + glVertex3d(0, 1, 0); + glVertex3d(-0.5, 0 ,0.5); + glVertex3d(0, 1, 0); + glVertex3d(0.5, 0 ,0.5); + glVertex3d(0, 1, 0); + glEnd(); + glPopMatrix(); + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + glLineWidth( oldWidth ); + + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w P y r a m i d +// +// Synopsis: Draws a pyramid using OpenGL. +// +// Parameters: scale - factor of scaling for the pyramid. +// p0 - the point at which to draw the pyramid. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawPyramid( double scale, const MPoint& p0, float width ) +{ + drawPyramid( scale, p0.x, p0.y, p0.z, width ); +} + +//----------------------------------------------------------------------------- +// d r a w S p h e r e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//------------------------------------------------------radius----------------------- +void GLExt::drawSphere( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + + GLUquadricObj* quadric = gluNewQuadric(); + gluQuadricDrawStyle( quadric, GLU_LINE ); + gluSphere( quadric, 1.0, 12, 6 ); + + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w S p h e r e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawSphere( double scale, const MPoint& p, float width ) +{ + drawSphere( scale, p.x, p.y, p.z, width ); +} + +//----------------------------------------------------------------------------- +// d r a w L i n e +// +// Synopsis: Draws a line between the two points. +// +// Parameters: The coordinates of the two points. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawLine( double x0, double y0, double z0, + double x1, double y1, double z1, + float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glBegin( GL_LINES ); + glVertex3f( (float)x0, (float)y0, (float)z0 ); + glVertex3f( (float)x1, (float)y1, (float)z1 ); + glEnd(); + + //Reset line width + glLineWidth( oldWidth ); + + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w L i n e +// +// Synopsis: Draws a line between the two points. +// +// Parameters: The points to draw the line between. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawLine( const MPoint& p0, const MPoint& p1, float width ) +{ + drawLine( p0.x, p0.y, p0.z, p1.x, p1.y, p1.z, width ); +} + +//============================================================================= +// GLExt::drawArrow +//============================================================================= +// Description: Comment +// +// Parameters: ( const MPoint& p0, const MPoint& p1, float width, float scale ) +// +// Return: void +// +//============================================================================= +void GLExt::drawArrow( const MPoint& p0, const MPoint& p1, float width, float scale ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + MVector scaledVector; + scaledVector = p1 - p0; + scaledVector /= scale; + + //Figure out a cross product... + MVector normal; + + normal = scaledVector^( MVector(0, 1.0, 0 ) ); + normal.normalize(); + normal *= scaledVector.length(); + + MPoint head0, head1; + + head0 = (p1 - scaledVector + normal ); + head1 = (p1 - scaledVector - normal ); + + //Set line width + glLineWidth( width ); + + glBegin( GL_LINES ); + glVertex3f( (float)p0.x, (float)p0.y, (float)p0.z ); + glVertex3f( (float)p1.x, (float)p1.y, (float)p1.z ); + + glVertex3f( (float)p1.x, (float)p1.y, (float)p1.z ); + glVertex3f( (float)head0.x, (float)head0.y, (float)head0.z ); + + glVertex3f( (float)p1.x, (float)p1.y, (float)p1.z ); + glVertex3f( (float)head1.x, (float)head1.y, (float)head1.z ); + glEnd(); + + //Reset line width + glLineWidth( oldWidth ); + + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w B o x +// +// Synopsis: Draws a box using OpenGL. +// +// Parameters: The coordinates of the minimal and maximal corners of the box. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawBox( double x0, double y0, double z0, + double x1, double y1, double z1, + float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + glBegin( GL_QUADS ); + + glVertex3f( (float)x0, (float)y0, (float)z0 ); + glVertex3f( (float)x0, (float)y0, (float)z1 ); + glVertex3f( (float)x1, (float)y0, (float)z1 ); + glVertex3f( (float)x1, (float)y0, (float)z0 ); + + glVertex3f( (float)x0, (float)y1, (float)z0 ); + glVertex3f( (float)x0, (float)y1, (float)z1 ); + glVertex3f( (float)x1, (float)y1, (float)z1 ); + glVertex3f( (float)x1, (float)y1, (float)z0 ); + + glEnd(); + + glBegin( GL_LINES ); + + glVertex3f( (float)x0, (float)y0, (float)z0 ); + glVertex3f( (float)x0, (float)y1, (float)z0 ); + + glVertex3f( (float)x0, (float)y0, (float)z1 ); + glVertex3f( (float)x0, (float)y1, (float)z1 ); + + glVertex3f( (float)x1, (float)y0, (float)z1 ); + glVertex3f( (float)x1, (float)y1, (float)z1 ); + + glVertex3f( (float)x1, (float)y0, (float)z0 ); + glVertex3f( (float)x1, (float)y1, (float)z0 ); + glEnd(); + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w B o x +// +// Synopsis: Draws a box using OpenGL. +// +// Parameters: p0 - the minimal corner of the box. +// p1 - the maximal corner of the box. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawBox( const MPoint& p0, const MPoint& p1, float width ) +{ + drawBox( p0.x, p0.y, p0.z, p1.x, p1.y, p1.z, width ); +} + +//----------------------------------------------------------------------------- +// d r a w X Z P l a n e +// +// Synopsis: Draws a finite plane in the XZ plane using OpenGL. +// +// Parameters: x0, z0 - the minimal vertex of the finite plane. +// x1, z1 - the maximal vertex of the finite plane. +// y - the height of the plane. +// +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void GLExt::drawXZPlane( double xscale, + double yscale, + double zscale, + double x0, + double z0, + double x1, + double z1, + double y, + float width + ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(xscale, yscale, zscale); + + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE ); + glBegin( GL_QUADS ); + + glVertex3f( (float)x0, (float)y, (float)z0 ); + glVertex3f( (float)x0, (float)y, (float)z1 ); + glVertex3f( (float)x1, (float)y, (float)z1 ); + glVertex3f( (float)x1, (float)y, (float)z0 ); + + glEnd(); + + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// d r a w X Z P l a n e +// +// Synopsis: Draws a finite plane in the XZ plane using OpenGL. +// +// Parameters: p0 - the minimal vertex of the finite plane. +// p1 - the maximal vertex of the finite plane. +// +// Returns: NOTHING +// +// Constraints: The y component of p1 is ignored and the plane is drawn at +// the height of the first point. +// +//----------------------------------------------------------------------------- +void GLExt::drawXZPlane( double xscale, + double yscale, + double zscale, + const MPoint& v0, + const MPoint& v1, + float width + ) +{ + drawXZPlane( xscale, yscale, zscale, v0.x, v0.z, v1.x, v1.z, v0.y, width ); +} + +//============================================================================= +// GLExt::drawP +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawP(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_LOOP ); + //Draw a "P" for pickup. + glVertex3d( 0,0,0); + glVertex3d( 0, 2.0, 0); + glVertex3d( 0.7, 2.0, 0); + glVertex3d( 1.2, 1.7, 0); + glVertex3d( 1.2, 1.3, 0); + glVertex3d( 0.7, 1, 0); + glVertex3d( 0, 1, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawStickMan +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawStickMan(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINES ); + glVertex3d( 0,0.6,0); + glVertex3d( 0, 1.5, 0); + glVertex3d( -0.5, 1.2, 0.0); + glVertex3d( 0.5, 1.2, 0); + glEnd(); + glBegin( GL_LINE_STRIP ); + glVertex3d( -0.5, 0, 0 ); + glVertex3d( 0, 0.6, 0 ); + glVertex3d( 0.5, 0, 0 ); + glEnd(); + glBegin( GL_QUADS ); + glVertex3d( -0.125, 1.5, 0 ); + glVertex3d( -0.125, 1.75, 0 ); + glVertex3d( 0.125, 1.75, 0 ); + glVertex3d( 0.125, 1.5, 0 ); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawCar +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawCar(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_LOOP ); + glVertex3d( 0, 0, 0); + glVertex3d( 0, 0, -0.25); + glVertex3d( 0, -0.2, -0.5 ); + glVertex3d( 0, 0, -0.75 ); + glVertex3d( 0, 0, -1.0 ); + glVertex3d( 0, 0.4, -1.0 ); + glVertex3d( 0, 0.4, -0.5 ); + glVertex3d( 0, 0.7, -0.45 ); + glVertex3d( 0, 0.7, 0.25 ); + glVertex3d( 0, 0.4, 0.4 ); + glVertex3d( 0, 0.3, 1.0 ); + glVertex3d( 0, 0, 1.0 ); + glVertex3d( 0, 0, 0.75 ); + glVertex3d( 0, -0.2, 0.5 ); + glVertex3d( 0, 0, 0.25 ); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawA +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawA(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + //Draw an "A" on top of the pyramid + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINES ); + glVertex3d( 0, 2.0, 0); + glVertex3d( -0.7, 0, 0); + glVertex3d( 0, 2.0, 0); + glVertex3d( 0.7, 0, 0); + glVertex3d( -0.7, 1.2, 0); + glVertex3d( 0.7, 1.2, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawD +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawD(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + //Draw a "D" on top of the pyramid + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glTranslated( -0.6, 0, 0); + glBegin( GL_LINE_LOOP ); + //Draw a "D" for dropoff. + glVertex3d( 0, 0, 0); + glVertex3d( 0, 2.0, 0); + glVertex3d( 0.6, 2.0, 0); + glVertex3d( 1.1, 1.7, 0); + glVertex3d( 1.2, 1, 0); + glVertex3d( 1.1, 0.3, 0); + glVertex3d( 0.6, 0, 0); + glEnd(); + glPopMatrix(); + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawE +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawE(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + //Draw the Letter "E" on top of the pyramid + glPushMatrix(); + glScaled(scale, scale, scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINES ); + glVertex3d( -0.4, 2, 0); + glVertex3d( -0.4, 0, 0); + glVertex3d( -0.4, 1, 0); + glVertex3d( 0.3, 1, 0); + glVertex3d( -0.4, 0, 0); + glVertex3d( 0.4, 0, 0); + glVertex3d( -0.4, 2, 0); + glVertex3d( 0.4, 2, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawS +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawS(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glTranslated( -0.75, 0, 0); + glBegin( GL_LINE_STRIP ); + //Draw an "S" for sound + glVertex3d( 0, 0.3, 0); + glVertex3d( 0.4, 0, 0); + glVertex3d( 1.2, 0, 0); + glVertex3d( 1.5, 0.4, 0); + glVertex3d( 1.2, 0.8, 0); + glVertex3d( 0.3, 1.25, 0); + glVertex3d( 0.05, 1.5, 0); + glVertex3d( 0.25, 1.9, 0); + glVertex3d( 0.9, 2.0, 0); + glVertex3d( 1.4, 1.75, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawCross +//============================================================================= +// Description: Comment +// +// Parameters: (double scale, double tx, double ty, double tz, float width) +// +// Return: void +// +//============================================================================= +void GLExt::drawCross(double scale, double tx, double ty, double tz, float width) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled( scale, scale, scale ); + glTranslated( tx, ty, tz ); + glBegin( GL_LINES ); + glVertex3d( -1, 0, 0 ); + glVertex3d( 1, 0, 0 ); + + glVertex3d( 0, 1, 0 ); + glVertex3d( 0, -1, 0 ); + + glVertex3d( 0, 0, 1 ); + glVertex3d( 0, 0, -1 ); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawLBolt +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawLBolt( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_STRIP ); + glVertex3d( 0, 0, 0); + glVertex3d( 0.5, 0.8, 0); + glVertex3d( -0.2, 1.4, 0); + glVertex3d( 0, 2.2, 0); + glVertex3d( -0.5, 1.4, 0); + glVertex3d( 0.2, 0.8, 0); + glVertex3d( 0, 0, 0 ); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawI +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawI( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_STRIP ); + glVertex3d( -0.6, 2, 0); + glVertex3d( 0.6, 2, 0); + glVertex3d( 0, 2, 0); + glVertex3d( 0, 0, 0); + glVertex3d( -0.6, 0, 0); + glVertex3d( 0.6, 0, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawW +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawW( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_STRIP ); + glVertex3d( -1.0, 2.0, 0); + glVertex3d( -0.5, 0, 0); + glVertex3d( 0, 1.5, 0); + glVertex3d( 0.5, 0, 0); + glVertex3d( 1.0, 2.0, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawM +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawM( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_STRIP ); + glVertex3d( -1.0, 0, 0); + glVertex3d( -0.5, 2.0, 0); + glVertex3d( 0, 0.5, 0); + glVertex3d( 0.5, 2.0, 0); + glVertex3d( 1.0, 0, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawC +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawC( double scale, double tx, double ty, double tz, float width ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glScaled(scale,scale,scale); + glTranslated(tx, ty, tz); + glBegin( GL_LINE_STRIP ); + //Draw an "C" for carStart + glVertex3d( 0.7, 0.5, 0); + glVertex3d( 0.35, 0, 0); + glVertex3d( -0.35, 0, 0); + glVertex3d( -0.7, 0.5, 0); + glVertex3d( -0.7, 1.5, 0); + glVertex3d( -0.35, 2.0, 0); + glVertex3d( 0.35, 2.0, 0); + glVertex3d( 0.7, 1.5, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + +//============================================================================= +// GLExt::drawO +//============================================================================= +// Description: Comment +// +// Parameters: ( double scale, double tx, double ty, double tz, float width ) +// +// Return: void +// +//============================================================================= +void GLExt::drawO( double scale, double tx, double ty, double tz, float width ) +{ + scale = 100.0f; + + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + //Store old line width + GLfloat oldWidth; + glGetFloatv( GL_LINE_WIDTH, &oldWidth ); + + //Set line width + glLineWidth( width ); + + glPushMatrix(); + glTranslated(tx, ty, tz); + glScaled(scale,scale,scale); + glBegin( GL_LINE_STRIP ); + //Draw an "O" + glVertex3d( 0.7, 0.5, 0); + glVertex3d( 0, 0, 0); + glVertex3d( -0.7, 0.5, 0); + glVertex3d( -0.7, 1.5, 0); + glVertex3d( 0, 2.0, 0); + glVertex3d( 0.7, 1.5, 0); + glVertex3d( 0.7, 0.5, 0); + glEnd(); + glPopMatrix(); + + glLineWidth( oldWidth ); + glPopAttrib(); +} + diff --git a/tools/globalcode/utility/GLExt.h b/tools/globalcode/utility/GLExt.h new file mode 100644 index 0000000..ae62a4f --- /dev/null +++ b/tools/globalcode/utility/GLExt.h @@ -0,0 +1,191 @@ +#ifndef _GLEXT_H +#define _GLEXT_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// GLExt.h +// +// Description: Functions that do drawing using the OpenGL API. +// +// Modification History: +// + Created Aug 21, 2001 -- bkusy +// + grossly modified by Cary Brisebois +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- +class MPoint; + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +class GLExt +{ +public: + static void drawCamera3D( double scale, double tx = 0.0f, + double ty = 0.0f, + double tz = 0.0f, + float width = 1.0f ); + + static void drawCrossHair3D( double scale, double tx = 0.0f, + double ty = 0.0f, + double tz = 0.0f, + float width = 1.0f ); + + static void drawCrossHair3D( double scale, + const MPoint& p, + float width = 1.0f ); + + + static void drawPyramid( double scale, double tx = 0.0f, + double ty = 0.0f, + double tz = 0.0f, + float width = 1.0f ); + + static void drawPyramid( double scale, + const MPoint& p0, + float width = 1.0f ); + + static void drawLine( double x0, double y0, double z0, + double x1, double y1, double z1, + float width = 1.0f ); + + static void drawLine( const MPoint& p0, + const MPoint& p1, + float width = 1.0f ); + + static void drawArrow( const MPoint& p0, + const MPoint& p1, + float width = 1.0f, + float scale = 6.0f ); + + static void drawBox( double x0, double y0, double z0, + double x1, double y1, double z1, + float width = 1.0f ); + + static void drawBox( const MPoint& p0, + const MPoint& p1, + float width = 1.0f ); + + static void drawSphere( double scale, double tx = 0, + double ty = 0, double tz = 0, + float width = 1.0f ); + + static void drawSphere( double scale, + const MPoint& p, + float width = 1.0f ); + + static void drawXZPlane( double xscale, + double yscale, + double zscale, + double x0, + double z0, + double x1, + double z1, + double y, + float width = 1.0f + ); + + static void drawXZPlane( double xscale, + double yscale, + double zscale, + const MPoint& v0, + const MPoint& v1, + float width = 1.0f + ); + static void drawP( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawStickMan( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawCar( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawA( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawD( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawE( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawS( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawCross( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawLBolt( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawI( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawW( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawM( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawC( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); + + static void drawO( double scale, + double tx = 0, + double ty = 0, + double tz = 0, + float width = 1.0f ); +}; + +#endif diff --git a/tools/globalcode/utility/MExt.cpp b/tools/globalcode/utility/MExt.cpp new file mode 100644 index 0000000..6523859 --- /dev/null +++ b/tools/globalcode/utility/MExt.cpp @@ -0,0 +1,2030 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt.cpp +// +// Description: Functions that extend the Maya API to perform other common +// tasks. +// +// Modification History: +// + Created Aug 21, 2001 -- bkusy +//----------------------------------------------------------------------------- +#include "precompiled/PCH.h" + +//---------------------------------------- +// System Includes +//---------------------------------------- +//#include <windows.h> + +#include <assert.h> +#include <stdlib.h> +#include <math.h> + +/* Using precompiled headers +#include <maya/M3dView.h> +#include <maya/MArgList.h> +#include <maya/MDagPath.h> +#include <maya/MDoubleArray.h> +#include <maya/MDGModifier.h> +#include <maya/MDoubleArray.h> +#include <maya/MGlobal.h> +#include <maya/MFnDagNode.h> +#include <maya/MFnData.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnMatrixData.h> +#include <maya/MFnTransform.h> +#include <maya/MFnTypedAttribute.h> +#include <maya/MItDag.h> +#include <maya/MItSelectionList.h> +#include <maya/MMatrix.h> +#include <maya/MObject.h> +#include <maya/MPlug.h> +#include <maya/MPlugArray.h> +#include <maya/MPoint.h> +#include <maya/MSelectionList.h> +#include <maya/MStatus.h> +#include <maya/MString.h> +#include <maya/MTransformationMatrix.h> +#include <maya/MTypeId.h> +#include <maya/MVector.h> +*/ + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "MExt.h" +#include "util.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- +static const double EPSILON = 0.00001; +static const int SCRATCHPAD_SIZE = 256; +static char scratchpad[ SCRATCHPAD_SIZE + 1 ]; + + +//----------------------------------------------------------------------------- +// G e t S c a l e d +// +// Synopsis: Retrieves an attribute that is first scaled by the scale in +// the node's parenting transform. +// +// Parameters: vertex - reference parameter to receive scaled attribute. +// node - the node the attribute is on. +// attr - the attribute to retrieve. +// +// Returns: The status of the request, hopefully MS::kSuccess. +// +// Constraints: This method only applies the scale that is stored in the +// immediate parent of the node. Prior parenting tranforms have +// no effect. +//----------------------------------------------------------------------------- +void MExt::Attr::GetScaled( MPoint* vertex, + const MObject& node, + const MObject& attr + ) +{ + MStatus status; + + // + // Get the nodes parenting transform. + // + MFnDagNode fnNode( node, &status ); + assert( status ); + + MObject transform = fnNode.parent( 0, &status ); + assert( status ); + + MFnTransform fnTransform( transform, &status ); + assert( status ); + + // + // Get the scale in the parenting transform. + // + double scale[3]; + status = fnTransform.getScale( scale ); + assert( status ); + + // + // Get the attribute. + // + Get( vertex, node, attr ); + + // + // Scale the attribute. + // + vertex->x *= scale[0]; + vertex->y *= scale[1]; + vertex->z *= scale[2]; +} + +//----------------------------------------------------------------------------- +// S e t S c a l e d +// +// Synopsis: Sets the attribute after taking into account the scale set in +// the immediate parenting transform. If the attribute initially +// has a value of (10,10,10) and a scaling vector of +// (0.5, 2.0, 0.5) is in the parenting transform. The attribute +// will be stored as (20,5,20) so that it will reflect the +// original value when the attribute is retrieved through the +// transform at a later time. +// +// Parameters: vertex - the vertex values to set the attribute to. +// node - the node to set the attribute on. +// attr - the attribute to set. +// +// Returns: NOTHING +// +// Constraints: Only the scaling in the immediate parenting transform is taken +// into account. +// +//----------------------------------------------------------------------------- +void MExt::Attr::SetScaled( const MPoint& vertex, + MObject& node, + MObject& attr + ) +{ + MStatus status; + + // + // Get the nodes parenting transform. + // + MFnDagNode fnNode( node, &status ); + assert( status ); + + MObject transform = fnNode.parent( 0, &status ); + assert( status ); + + MFnTransform fnTransform( transform, &status ); + assert( status ); + + // + // Get the scale in the parenting transform. + // + double scale[3]; + status = fnTransform.getScale( scale ); + assert( status ); + + // + // Create the "unscaled" vertex. + // + MPoint scaledVertex = vertex; + scaledVertex.x = scaledVertex.x / scale[0]; + scaledVertex.y = scaledVertex.y / scale[1]; + scaledVertex.z = scaledVertex.z / scale[2]; + + Set( scaledVertex, node, attr ); +} + +//----------------------------------------------------------------------------- +// S e t S c a l e d +// +// Synopsis: Sets the attribute after taking into account the scale set in +// the immediate parenting transform. If the attribute initially +// has a value of (10,10,10) and a scaling vector of +// (0.5, 2.0, 0.5) is in the parenting transform. The attribute +// will be stored as (20,5,20) so that it will reflect the +// original value when the attribute is retrieved through the +// transform at a later time. +// +// Parameters: vertex - the vertex values to set the attribute to. +// node - the node to set the attribute on. +// attr - the name of the attribute. +// +// Returns: NOTHING +// +// Constraints: Only the scaling in the immediate parenting transform is taken +// into account. +// +//----------------------------------------------------------------------------- +void MExt::Attr::SetScaled( const MPoint& vertex, + MObject& node, + const MString& attr + ) +{ + MStatus status; + + // + // Get the attribute object that corresponds to the named attribute. + // + MFnDagNode fnNode( node, &status ); + assert( status ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + SetScaled( vertex, node, plug.attribute() ); +} + +//----------------------------------------------------------------------------- +// O p t i o n P a r s e r : : O p t i o n P a r s e r +// +// Synopsis: Constructor +// +// Parameters: args - the MArgList passed into functions like doIt(); +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MExt::OptionParser::OptionParser( const char* command, const MArgList& args ) : + m_argc( 0 ), + m_argv( 0 ), + m_opt( 0 ) +{ + assert( command ); + + typedef char* charPointer; + + // + // Create our simultated argument environment. We add one to m_argc because + // we are inserting the command name as well. + // + m_argc = args.length() + 1; + m_argv = new charPointer[ m_argc ]; + assert( m_argv ); + + // + // Copy in the command name. + // + m_argv[0] = new char[ strlen( command ) + 1 ]; + assert( m_argv[0] ); + strcpy( m_argv[0], command ); + + // + // Copy in the arguments from argList. + // + int i; + for ( i = 1; i < m_argc; i++ ) + { + MString arg; + args.get( i - 1, arg ); + m_argv[i] = new char[ strlen( arg.asChar() ) + 1 ]; + assert( m_argv[i] ); + strcpy( m_argv[i], arg.asChar() ); + } + + // + // Initialize the parser. + // + util_getopt_init(); +} + +//----------------------------------------------------------------------------- +// O p t i o n P a r s e r : : ~ O p t i o n P a r s e r +// +// Synopsis: Destructor +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MExt::OptionParser::~OptionParser() +{ + if ( m_argv ) + { + int i; + for ( i = 0; i < m_argc; i++ ) + { + if ( m_argv[i] ) + { + delete m_argv[i]; + } + } + + delete m_argv; + } + + m_argc = 0; + + if ( m_opt ) + { + delete m_opt; + m_opt = 0; + } +} + +//----------------------------------------------------------------------------- +// O p t i o n P a r s e r : : s e t O p t i o n s +// +// Synopsis: Specify the options that will be parsed. +// +// Parameters: optionSpec - the specification string. eg. "hgu:t:" would +// specify two boolean flags, "h" and "g" ( they +// do not take arguments ), and two argument flags, +// "u" and "t", that take arguments. Flags that +// take arguments must be followed by a ":". +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::OptionParser::setOptions( const char* optionSpec ) +{ + int len = strlen( optionSpec ) + 1; + m_opt = new char[ len + 1 ]; + assert( m_opt ); + + strncpy( m_opt, optionSpec, len ); +} + +//----------------------------------------------------------------------------- +// O p t i o n P a r s e r : : n e x t O p t i o n +// +// Synopsis: Get the next option. +// +// Parameters: NONE +// +// Returns: The character flag for the next option or -1 if no more +// options. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int MExt::OptionParser::nextOption() +{ + int result = util_getopt( m_argc, m_argv, m_opt ); + return result; +} + +//----------------------------------------------------------------------------- +// O p t i o n P a r s e r : : g e t A r g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MString MExt::OptionParser::getArg() +{ + MString result( util_optarg ); + return result; +} + +//----------------------------------------------------------------------------- +// O p t i o n V a r : : G e t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::OptionVar::Get( char* buffer, unsigned int buffer_size, const char* symbol ) +{ + bool doesExist = false; + + MString command = "optionVar -exists "; + command += symbol; + + int exists; + MGlobal::executeCommand( command, exists ); + + if ( exists ) + { + command = "optionVar -query "; + command += symbol; + + MString result; + MGlobal::executeCommand( command, result ); + + assert( result.length() < buffer_size ); + strncpy( buffer, result.asChar(), buffer_size ); + + doesExist = true; + } + + return doesExist; +} + + +//----------------------------------------------------------------------------- +// O p t i o n V a r : : S e t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::OptionVar::Set( const char* buffer, const char* symbol ) +{ + MString command; + command = "optionVar -stringValue "; + command += symbol; + command += " \""; + command += buffer; + command += "\""; + + MGlobal::executeCommand( command ); +} + +//----------------------------------------------------------------------------- +// A d d C h i l d +// +// Synopsis: Make a locator node the child of another by parenting the transforms. +// +// Parameters: parentLocatorNode - locator node to be the parent +// childLocatorNode - locator node to be the child +// +// Returns: NOTHING +// +// Constraints: Must both have transforms. +// +//----------------------------------------------------------------------------- +void MExt::AddChild( MObject& parentLocatorNode, MObject& childLocatorNode ) +{ +// assert( parentLocatorNode.apiType() == MFn::kLocator ); +// assert( childLocatorNode.apiType() == MFn::kLocator ); + + //Get the transform of the parent node + MFnDagNode fnDag( parentLocatorNode ); + MObject parentTransform = fnDag.parent( 0 ); + + //Get teh transform of the child node. + fnDag.setObject( childLocatorNode ); + MObject childTransform = fnDag.parent( 0 ); + + //Parent the fence to the wall + fnDag.setObject( parentTransform ); + fnDag.addChild( childTransform ); +} + +//----------------------------------------------------------------------------- +// C o n n e c t +// +// Synopsis: Connect two nodes via the specified attributes. +// +// Parameters: node - the source node. +// attr - the source attribute. +// otherNode - the destination node. +// otherAttr - the destination attribute. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::Connect( MObject& node, + MObject& attr, + MObject& otherNode, + MObject& otherAttr + ) +{ + MStatus status; + + MDGModifier modifier; + status = modifier.connect( node, attr, otherNode, otherAttr ); + assert( status ); + + status = modifier.doIt(); + if ( !status ) MGlobal::displayError( status.errorString() ); + assert( status ); +} + +void MExt::Connect( MObject& node, + const char* attr, + MObject& otherNode, + const char* otherAttr + ) +{ + MStatus status; + + MFnDependencyNode fnNode; + + fnNode.setObject( node ); + MPlug nodePlug = fnNode.findPlug( MString( attr ), &status ); + assert( status ); + + + fnNode.setObject( otherNode ); + MPlug otherNodePlug = fnNode.findPlug( MString( otherAttr ), &status ); + assert( status ); + + MDGModifier modifier; + status = modifier.connect( node, nodePlug.attribute(), otherNode, otherNodePlug.attribute() ); + assert( status ); + + status = modifier.doIt(); + if ( !status ) MGlobal::displayError( status.errorString() ); + assert( status ); +} + +//----------------------------------------------------------------------------- +// C r e a t e N o d e +// +// Synopsis: +// +// Parameters: node - reference parameter to receive node MObject. +// transform - reference parameter to receive the parenting +// transform. +// type - the type of node to create. +// name - the name to assign to the node. If NULL default +// name is used. +// group - MObject representing the group under which to +// attach the new node. If NULL then the new node +// is attached at the DAG root. +// +// Returns: the status of the request -- hopefully MS::kSuccess. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::CreateNode( MObject* node, + MObject* transform, + const MString& type, + const MString* name, + const MObject& group + ) +{ + MStatus status; + + // + // Determine names for the nodes. This must be done before the + // nodes are created so as to avoid conflicting with the default + // names that Maya will assign them prior to us renaming them. + // + MString nodeName = type; + if ( name ) nodeName = *name; + MString transformName = ( "TForm" + nodeName ); + + MakeNameUnique( &nodeName, nodeName, group ); + MakeNameUnique( &transformName, transformName, group ); + + // + // Create the transform. + // + MFnTransform fnTransform; + fnTransform.create( MObject::kNullObj, &status ); + assert( status ); + + // + // Create the node under the transform. + // + MFnDagNode fnNode; + fnNode.create( type, fnTransform.object(), &status ); + assert( status ); + + if ( group != MObject::kNullObj ) + { + // + // Place the new node under the group node. + // + MFnTransform fnGroup( group, &status ); + assert( status ); + + status = fnGroup.addChild( fnTransform.object() ); + assert( status ); + } + + // + // Name the nodes. + // + fnTransform.setName( transformName, &status ); + assert( status ); + + fnNode.setName( nodeName, &status ); + assert( status ); + + // + // Return the node and transform objects in the reference parameters. + // + if ( transform ) + { + *transform = fnTransform.object(); + } + + if ( node ) + { + *node = fnNode.object(); + } +} + +//----------------------------------------------------------------------------- +// C r e a t e N o d e +// +// Synopsis: +// +// Parameters: node - reference parameter to receive node MObject. +// transform - reference parameter to receive the parenting +// transform. +// type - the type of node to create. +// name - the name to assign to the node. If NULL default +// name is used. +// group - MObject representing the group under which to +// attach the new node. If NULL then the new node +// is attached at the DAG root. +// +// Returns: the status of the request -- hopefully MS::kSuccess. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::CreateNode( MObject& node, + MObject& transform, + const MString& type, + const MString* name, + const MObject& group + ) +{ + MStatus status; + + // + // Determine names for the nodes. This must be done before the + // nodes are created so as to avoid conflicting with the default + // names that Maya will assign them prior to us renaming them. + // + MString nodeName = type; + if ( name ) nodeName = *name; + MString transformName = ( "TForm" + nodeName ); + + MakeNameUnique( &nodeName, nodeName, group ); + MakeNameUnique( &transformName, transformName, group ); + + // + // Create the transform. + // + MFnTransform fnTransform; + fnTransform.create( MObject::kNullObj, &status ); + assert( status ); + + // + // Create the node under the transform. + // + MFnDagNode fnNode; + fnNode.create( type, fnTransform.object(), &status ); + assert( status ); + + if ( group != MObject::kNullObj ) + { + // + // Place the new node under the group node. + // + MFnTransform fnGroup( group, &status ); + assert( status ); + + status = fnGroup.addChild( fnTransform.object() ); + assert( status ); + } + + // + // Name the nodes. + // + fnTransform.setName( transformName, &status ); + assert( status ); + + fnNode.setName( nodeName, &status ); + assert( status ); + + // + // Return the node and transform objects in the reference parameters. + // + transform = fnTransform.object(); + node = fnNode.object(); +} + +//----------------------------------------------------------------------------- +// C r e a t e V e r t e x A t t r i b u t e +// +// Synopsis: Intended for use within the initialize() method for a node +// class. Creates a vertex attribute using a double array. +// +// Parameters: name - the name of the attribute. +// breif_name - the brief name of the attribute. +// +// Returns: the attribute object. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::CreateVertexAttribute( MObject* attr, + const char* name, + const char* briefName + ) +{ + MStatus status; + + MDoubleArray doubleArray; + MFnDoubleArrayData doubleArrayData; + MObject defaultVertex = doubleArrayData.create( doubleArray, &status ); + assert( status ); + + MFnTypedAttribute fnAttribute; + *attr = fnAttribute.create( name, + briefName, + MFnData::kDoubleArray, + defaultVertex, + &status + ); + assert( status ); +} + +//============================================================================= +// MExt::DeleteNode +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& node, bool deleteParent ) +// +// Return: void +// +//============================================================================= +void MExt::DeleteNode( MObject& node, bool deleteParent ) +{ + //Get the parent and delete it too if it's a transform and the bool says so. + + MStatus status; + MObject parent; + + if ( deleteParent ) + { + //Get the parent please. + MFnDagNode fnDag( node ); + parent = fnDag.parent( 0, &status ); + assert( status ); + } + + //Delete this node + MGlobal::deleteNode( node ); + + if ( deleteParent ) + { + //Delete the parent. + MGlobal::deleteNode( parent ); + } +} + +//----------------------------------------------------------------------------- +// D i s c o n n e c t A l l +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::DisconnectAll( MObject& node, MObject& attr ) +{ + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + // + // Get the plug for the attribute to be disconnected. + // + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + // + // Find all connections and disconnect them. + // + MDGModifier modifier; + MPlugArray sources; + MPlugArray targets; + MExt::ResolveConnections( &sources, &targets, plug, true, true ); + + unsigned int count = sources.length(); + unsigned int i; + + for ( i = 0; i < count; i++ ) + { + status = modifier.disconnect( sources[i], targets[i] ); + assert( status ); + } + + status = modifier.doIt(); + assert( status ); +} + +void MExt::DisconnectAll( MObject& node, const char* attrName ) +{ + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + // + // Get the plug for the attribute to be disconnected. + // + MPlug plug = fnNode.findPlug( MString( attrName ), &status ); + assert( status ); + + // + // Find all connections and disconnect them. + // + MDGModifier modifier; + MPlugArray sources; + MPlugArray targets; + MExt::ResolveConnections( &sources, &targets, plug, true, true ); + + unsigned int count = sources.length(); + unsigned int i; + + for ( i = 0; i < count; i++ ) + { + status = modifier.disconnect( sources[i], targets[i] ); + assert( status ); + } + + status = modifier.doIt(); + assert( status ); +} + +//----------------------------------------------------------------------------- +// D i s p l a y E r r o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int MExt::DisplayError( const char* fmt, ... ) +{ + va_list argp; + va_start( argp, fmt ); + int size = _vsnprintf( scratchpad, SCRATCHPAD_SIZE, fmt, argp ); + MGlobal::displayError( scratchpad ); + return size; +} + +//----------------------------------------------------------------------------- +// D i s p l a y W a r n i n g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int MExt::DisplayWarning( const char* fmt, ... ) +{ + va_list argp; + va_start( argp, fmt ); + int size = _vsnprintf( scratchpad, SCRATCHPAD_SIZE, fmt, argp ); + MGlobal::displayWarning( scratchpad ); + return size; +} + +//----------------------------------------------------------------------------- +// D i s p l a y I n f o +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int MExt::DisplayInfo( const char* fmt, ... ) +{ + va_list argp; + va_start( argp, fmt ); + int size = _vsnprintf( scratchpad, SCRATCHPAD_SIZE, fmt, argp ); + MGlobal::displayInfo( scratchpad ); + return size; +} + + + + +//----------------------------------------------------------------------------- +// F i l t e r S e l e c t i o n L i s t +// +// Synopsis: Filters the given source list for nodes of "typeName" and +// places them in the filtered list. If transforms are in the +// source list all their children are filtered as well. +// +// Parameters: filteredList - reference paremeter to receive the filtered +// list. +// typeName - the type name to check for. +// sourceList - the list to filter. +// +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::FilterSelectionList( MSelectionList* filteredList, + const MString& typeName, + const MSelectionList& sourceList + ) +{ + assert( filteredList ); + + MItSelectionList it_source( sourceList ); + while( ! it_source.isDone() ) + { + MObject node; + it_source.getDependNode( node ); + + MFnDependencyNode fnNode; + fnNode.setObject( node ); + + if ( fnNode.typeName() == typeName ) + { + filteredList->add( fnNode.object() ); + } + else if ( strcmp( "transform" , fnNode.typeName().asChar() ) == 0 ) + { + SelectNodesBelowRoot( filteredList, typeName, fnNode.object() ); + } + + it_source.next(); + } +} + +//============================================================================= +// MExt::FindAllSkeletonRoots +//============================================================================= +// Description: Comment +// +// Parameters: ( MObjectArray* objects ) +// +// Return: bool +// +//============================================================================= +bool MExt::FindAllSkeletonRoots( MObjectArray* objects ) +{ + MStatus status; + bool returnVal = false; + + MItDag dagIt( MItDag::kDepthFirst, MFn::kTransform, &status ); + assert( status ); + + while( !dagIt.isDone() ) + { + MFnTransform fnTransform( dagIt.item() ); + + MPlug p3dBoolPlug = fnTransform.findPlug( MString("p3dBooleanAttributes"), &status ); + if ( status ) + { + //This has p3d info. + int value = 0; + p3dBoolPlug.getValue( value ); + + if ( value & 0x0002 ) //This is the skelton root bit... HACK + { + objects->append( fnTransform.object() ); + returnVal = true; + } + } + + dagIt.next(); + } + + return returnVal; +} + +//============================================================================= +// MExt::FindAllTransforms +//============================================================================= +// Description: Comment +// +// Parameters: ( MObjectArray* transforms, const MObject& root ) +// +// Return: bool +// +//============================================================================= +bool MExt::FindAllTransforms( MObjectArray* transforms, const MObject& root ) +{ + bool returnVal = false; + + MItDag dagIt( MItDag::kDepthFirst, MFn::kTransform ); + MDagPath path; + MDagPath::getAPathTo( root, path ); + + dagIt.reset( path, MItDag::kDepthFirst, MFn::kTransform ); + + while ( !dagIt.isDone() ) + { + transforms->append( dagIt.item() ); + returnVal = true; + + dagIt.next(); + } + + return returnVal; +} + +//----------------------------------------------------------------------------- +// F i n d D a g N o d e B y N a m e +// +// Synopsis: Find a node in the DAG using its name as the search key. +// +// Parameters: path - reference object to receive the path of the found +// node. +// name - the name to search for. +// root - only search under this node. +// +// Returns: true if found, false otherwise. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::FindDagNodeByName( MDagPath* path, + const MString& name, + const MObject& root + ) +{ + MStatus status; + + MItDag it_dag; + if ( root != MObject::kNullObj ) + { + status = it_dag.reset( root ); + if ( MS::kSuccess != status ) return false; + } + + bool found = false; + while ( !found && !it_dag.isDone() ) + { + MFnDependencyNode node( it_dag.item(), &status ); + assert( status ); + if ( name == node.name() ) + { + found = true; + if ( path ) + { + it_dag.getPath( *path ); + } + } + it_dag.next(); + } + + return found; +} + +//----------------------------------------------------------------------------- +// F i n d D a g N o d e B y N a m e +// +// Synopsis: Find a node in the DAG using its name as the search key. +// +// Parameters: path - reference object to receive the path of the found +// node. +// name - the name to search for. +// root - only search under the node named root. +// +// Returns: true if found, false otherwise. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::FindDagNodeByName( MDagPath* path, + const MString& name, + const MString& root + ) +{ + MDagPath myPath; + bool found = FindDagNodeByName( &myPath, root ); + if ( found ) + { + found = FindDagNodeByName( path, name, myPath.node() ); + } + + return found; +} + +//----------------------------------------------------------------------------- +// G e t W o r l d P o s i t i o n +// +// Synopsis: Retrieves the world position of the given node. +// +// Parameters: wp - reference parameter to receive the world positioin. +// node - the node object to retrieve the world position of. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::GetWorldPosition( MPoint* wp, const MObject& node ) +{ + MStatus status; + + MFnDependencyNode fnNode( node ); + + // + // Attempt to get the world matrix attribute. + // + MObject attrObject = fnNode.attribute( "worldMatrix", &status ); + assert( status ); + + // + // Build the world matrix plug. Use the first element on the plug. + // + MPlug plug( const_cast<MObject&>(node), attrObject ); + plug = plug.elementByLogicalIndex( 0, &status ); + assert( status ); + + // + // Get the world matrix. We have to go through a few Maya layers on this + // one. + // + MObject matrixObject; + status = plug.getValue( matrixObject ); + assert( status ); + + MFnMatrixData matrixData( matrixObject, &status ); + assert( status ); + + MMatrix matrix = matrixData.matrix( &status ); + assert( status ); + + // + // The translation vector of the matrix is our position. + // + wp->x = matrix( 3, 0 ); + wp->y = matrix( 3, 1 ); + wp->z = matrix( 3, 2 ); +} + + +//----------------------------------------------------------------------------- +// G e t W o r l d P o s i t i o n B e t w e e n +// +// Synopsis: Retrieves the world position of a point between the the given nodes. +// +// Parameters: node1 - The first node +// node1 - The second node +// betweenPoint - receives the point between the two nodes +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPoint MExt::GetWorldPositionBetween( MObject& node1, MObject& node2 ) +{ + MVector newWPVect; + MPoint node1WP; + MPoint node2WP; + + MExt::GetWorldPosition( &node1WP, node1 ); + MExt::GetWorldPosition( &node2WP, node2 ); + + newWPVect = node2WP - node1WP; + newWPVect /= 2.0f; + newWPVect += node1WP; + + MPoint newPoint( newWPVect ); + return newPoint; +} + +//============================================================================= +// MExt::GetWorldMatrix +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& node ) +// +// Return: MMatrix +// +//============================================================================= +MMatrix MExt::GetWorldMatrix( MObject& node ) +{ + MStatus status; + + MFnDependencyNode fnNode( node ); + + // + // Attempt to get the world matrix attribute. + // + MObject attrObject = fnNode.attribute( "worldMatrix", &status ); + assert( status ); + + // + // Build the world matrix plug. Use the first element on the plug. + // + MPlug plug( const_cast<MObject&>(node), attrObject ); + plug = plug.elementByLogicalIndex( 0, &status ); + assert( status ); + + // + // Get the world matrix. We have to go through a few Maya layers on this + // one. + // + MObject matrixObject; + status = plug.getValue( matrixObject ); + assert( status ); + + MFnMatrixData matrixData( matrixObject, &status ); + assert( status ); + + MMatrix matrix = matrixData.matrix( &status ); + assert( status ); + + return matrix; +} + +//----------------------------------------------------------------------------- +// MExt : : I s C o n n e c t e d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::IsConnected( MObject& node, const char* attr ) +{ + MStatus status; + MFnDependencyNode fnNode; + + + fnNode.setObject( node ); + + MPlug plug = fnNode.findPlug( MString( attr ), &status ); + assert( status ); + + return plug.isConnected(); +} + +bool MExt::IsConnected( MObject& node, MObject& attr ) +{ + MStatus status; + MFnDependencyNode fnNode; + + + fnNode.setObject( node ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + return plug.isConnected(); +} + +bool MExt::IsConnected( MPlug& plug1, MPlug& plug2 ) +{ + MPlugArray plugArray; + + plug1.connectedTo( plugArray, true, true ); + + unsigned int i; + for ( i = 0; i < plugArray.length(); ++i ) + { + if ( plugArray[i] == plug2 ) + { + return true; + } + } + + return false; +} + +//----------------------------------------------------------------------------- +// M a k e N a m e U n i q u e +// +// Synopsis: Append numerical suffixes to a name to make it unique under +// a specified root node. +// +// Parameters: unique - a reference parameter to receive the new unique name. +// name - the original name. +// root - the node under which the name must be unique. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::MakeNameUnique( MString* unique, + const MString& name, + const MObject& root + ) +{ + const int bufferSize = 256; + + MString myName = name; + assert( myName.length() < bufferSize ); + + if ( FindDagNodeByName( 0, myName, root ) ) + { + char buffer[ bufferSize ]; + strncpy( buffer, myName.asChar(), bufferSize ); + + // + // Isolate the base name by removing any numerical suffixes. + // + char* suffix = const_cast<char*>(util_reverseSpan( buffer, "0123456789" )); + if ( suffix ) + { + *suffix = '\0'; + } + + myName = buffer; + int isuffix = 0; + while( FindDagNodeByName( 0, myName, root ) ) + { + isuffix++; + myName = buffer; + myName += isuffix; + } + + } + + *unique = myName; +} + +//----------------------------------------------------------------------------- +// M a k e N a m e U n i q u e +// +// Synopsis: Append numerical suffixes to a name to make it unique under +// a specified root node. +// +// Parameters: unique - a reference parameter to receive the new unique name. +// name - the original name. +// root - name of the node under which the name must be unique. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::MakeNameUnique( MString* unique, + const MString& name, + const MString& root + ) +{ + MObject rootObject = MObject::kNullObj; + MDagPath path; + if ( FindDagNodeByName( &path, root ) ) + { + rootObject = path.node(); + } + + MakeNameUnique( unique, name, rootObject ); +} + +//============================================================================= +// MExt::MeshClickIntersect +//============================================================================= +// Description: Comment +// +// Parameters: ( short xClick, short yClick, MPoint& intersect, bool closest = true ) +// +// Return: bool +// +//============================================================================= +bool MExt::MeshClickIntersect( short xClick, + short yClick, + MPoint& intersect, + bool closest ) +{ + //Get the mesh below the clicked point and find it's y height. + short xStart, xEnd, yStart, yEnd; + + xStart = 0; + xEnd = M3dView::active3dView().portWidth(); + yStart = M3dView::active3dView().portHeight(); + yEnd = 0; + + MGlobal::selectFromScreen( xStart, + yStart, + xEnd, + yEnd, + MGlobal::kReplaceList ); + + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.length() > 0 ) + { + //Go through each selected object and see if the ray intersects it. + MItSelectionList selectIt( selectionList, MFn::kMesh ); + + MPoint nearClick, farClick; + M3dView activeView = M3dView::active3dView(); + activeView.viewToWorld( xClick, yClick, nearClick, farClick ); + MVector rayDir( MVector( farClick ) - MVector( nearClick ) ); + MPointArray intersectPoints; + MDagPath objDag; + + bool found = false; + + MPoint resultPoint; + + if ( closest ) + { + resultPoint.x = 100000.0; + resultPoint.y = 100000.0; + resultPoint.z = 100000.0; + } + else + { + resultPoint.x = 0; + resultPoint.y = 0; + resultPoint.z = 0; + } + + while ( !selectIt.isDone() ) + { + selectIt.getDagPath( objDag ); + + MFnMesh mesh( objDag ); + + mesh.intersect( nearClick, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + unsigned int i; + for ( i = 0; i < intersectPoints.length(); ++i ) + { + //test each point... + if ( closest ) + { + if ( intersectPoints[i].distanceTo(nearClick) < (resultPoint.distanceTo(nearClick) ) ) + { + resultPoint = intersectPoints[i]; + found = true; + } + } + else + { + if ( intersectPoints[i].distanceTo(nearClick) > (resultPoint.distanceTo(nearClick) ) ) + { + resultPoint = intersectPoints[i]; + found = true; + } + } + } + + selectIt.next(); + } + + if ( found ) + { + intersect = resultPoint; + MGlobal::clearSelectionList(); + return true; + } + } + + MGlobal::clearSelectionList(); + return false; +} + +//============================================================================= +// MExt::MeshIntersectAlongVector +//============================================================================= +// Description: Comment +// +// Parameters: ( MPoint from, MPoint direction, MPoint& intersect, bool closest = true ) +// +// Return: bool +// +//============================================================================= +bool MExt::MeshIntersectAlongVector( MPoint from, + MPoint direction, + MPoint& intersect, + bool closest ) +{ + MSelectionList selectionList; + selectionList.clear(); + + MItDag itDag(MItDag::kDepthFirst, MFn::kMesh ); + + while ( !itDag.isDone() ) + { + MDagPath dagPath; + itDag.getPath( dagPath ); + + selectionList.add( dagPath ); + + itDag.next(); + } + + if ( selectionList.length() > 0 ) + { + //Go through each selected object and see if the ray intersects it. + MItSelectionList selectIt( selectionList, MFn::kMesh ); + + MPointArray intersectPoints; + MDagPath objDag; + + bool found = false; + + MPoint resultPoint; + + if ( closest ) + { + resultPoint.x = 100000.0; + resultPoint.y = 100000.0; + resultPoint.z = 100000.0; + } + else + { + resultPoint.x = 0; + resultPoint.y = 0; + resultPoint.z = 0; + } + + while ( !selectIt.isDone() ) + { + selectIt.getDagPath( objDag ); + + MStatus status; + + MFnMesh mesh( objDag, &status ); + assert( status ); + + + const char* name = mesh.name().asChar(); + + mesh.intersect( from, direction, intersectPoints, 0.001f, MSpace::kWorld ); + + unsigned int i; + for ( i = 0; i < intersectPoints.length(); ++i ) + { + //test each point... + if ( closest ) + { + if ( intersectPoints[i].distanceTo(from) < (resultPoint.distanceTo(from) ) ) + { + resultPoint = intersectPoints[i]; + found = true; + } + } + else + { + if ( intersectPoints[i].distanceTo(from) > (resultPoint.distanceTo(from) ) ) + { + resultPoint = intersectPoints[i]; + found = true; + } + } + } + + selectIt.next(); + } + + if ( found ) + { + intersect = resultPoint; + MGlobal::clearSelectionList(); + return true; + } + } + + MGlobal::clearSelectionList(); + return false; +} + +//----------------------------------------------------------------------------- +// P l u g H a s C o n n e c t i o n +// +// Synopsis: Determines if there are any connections on the specified plug. +// +// Parameters: connectedNode - reference parameter to receive the associated +// node for the first connection found. +// plug - the plug to get the connections for. +// asSrc - if true, retrieve connections where "plug" is +// the source of the connection. +// asDst - if true, retrieve connections where "plug" is +// the target of the connection. +// +// Returns: true, if the plug has connections; false, otherwise +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::PlugHasConnection( MObject* connectedNode, + MPlug& plug, + bool asDst, + bool asSrc, + const char* type + ) +{ + bool isOk = false; + + MPlug myPlug; + isOk = PlugHasConnection( &myPlug, plug, asDst, asSrc, type ); + + if ( isOk ) + { + if ( connectedNode ) *connectedNode = myPlug.node(); + } + + return isOk; +} + +//----------------------------------------------------------------------------- +// P l u g H a s C o n n e c t i o n +// +// Synopsis: Determines if there are any connections on the specified plug. +// +// Parameters: connectedPlug - reference parameter to receive the plug of +// the first connection found. +// plug - the plug to get the connections for. +// asSrc - if true, retrieve connections where "plug" is +// the source of the connection. +// asDst - if true, retrieve connections where "plug" is +// the target of the connection. +// +// Returns: true, if the plug has connections; false, otherwise +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +bool MExt::PlugHasConnection( MPlug* connectedPlug, + MPlug& plug, + bool asDst, + bool asSrc, + const char* type + ) +{ + MPlugArray buffer; + + if ( asSrc ) + { + MPlugArray destinations; + ResolveConnections( &buffer, &destinations, plug, false, true ); + + unsigned int i; + for( i = 0; i < destinations.length(); i++ ) + { + bool isOk = true; + if ( type ) + { + MFnDependencyNode fnNode( destinations[i].node() ); + if ( fnNode.typeName() != type ) + { + isOk = false; + } + } + + if ( isOk ) + { + if ( connectedPlug ) *connectedPlug = destinations[i]; + return true; + } + } + } + + if ( asDst ) + { + MPlugArray sources; + ResolveConnections( &sources, &buffer, plug, true, false ); + + unsigned int i; + for( i = 0; i < sources.length(); i++ ) + { + bool isOk = true; + if ( type ) + { + MFnDependencyNode fnNode( sources[i].node() ); + if ( fnNode.typeName() != type ) + { + isOk = false; + } + } + + if ( isOk ) + { + if ( connectedPlug ) *connectedPlug = sources[i]; + return true; + } + } + } + + return false; +} + +//----------------------------------------------------------------------------- +// R e s o l v e C o n n e c t i o n s +// +// Synopsis: Retrieves the plugs that are connected to this plug. This +// will work on plugs that are associated with array as well as +// non-array attributes. +// +// Parameters: sources - reference parameter to recieve list of +// connection sources. +// targets - reference parameter to recieve list of +// connection targets. +// plug - the plug to get the connections for. +// asSrc - if true, retrieve connections where "plug" is +// the source of the connection. +// asDst - if true, retrieve connections where "plug" is +// the target of the connection. +// +// Returns: true, if the plug has connections; false, otherwise +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::ResolveConnections( MPlugArray* sources, + MPlugArray* targets, + MPlug& plug, + bool asDst, + bool asSrc + ) +{ + assert( sources ); + assert( targets ); + + MStatus status; + MPlugArray myPlugs; + unsigned int count = 0; + unsigned int i = 0; + + if ( plug.isArray() ) + { + count = plug.numElements( &status ); + assert( status ); + + for ( i = 0; i < count; i++ ) + { + MPlug element = plug.elementByPhysicalIndex( i, &status ); + assert( status ); + + if ( element.isConnected() ) + { + + MString name = element.name(); + const char* dbg_name = name.asChar(); + + myPlugs.append( element ); + } + } + } + else + { + myPlugs.append( plug ); + } + + sources->clear(); + targets->clear(); + count = myPlugs.length(); + for ( i = 0; i < count; i++ ) + { + MPlugArray connectedPlugs; + + if ( asDst ) + { + myPlugs[i].connectedTo( connectedPlugs, true, false, &status ); + assert( status ); + + if ( connectedPlugs.length() > 0 ) + { + sources->append( connectedPlugs[0] ); + targets->append( myPlugs[i] ); + } + } + + if ( asSrc ) + { + myPlugs[i].connectedTo( connectedPlugs, false, true, &status ); + assert( status ); + + if ( connectedPlugs.length() > 0 ) + { + sources->append( myPlugs[i] ); + targets->append( connectedPlugs[0] ); + } + } + } + + assert( sources->length() == targets->length() ); +} + +//----------------------------------------------------------------------------- +// S e l e c t N o d e s B e l o w R o o t +// +// Synopsis: Select nodes meeting the specified criteria and place them +// in the provided selection list. +// +// Parameters: list - the list to receive the nodes. +// typeId - the typeId of the node type to select. +// root - the root of the subsection of the DAG to search. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::SelectNodesBelowRoot( MSelectionList* list, + const MString& typeName, + const MObject& root, + MSelectionList* intersectionList + ) +{ + assert( list ); + + MStatus status; + + bool mergeWithExisting = true; + + MItDag itor; + + if ( root != MObject::kNullObj ) + { + itor.reset( root ); + } + + while( ! itor.isDone() ) + { + MFnDependencyNode fnNode; + fnNode.setObject( itor.item() ); + + if ( fnNode.typeName() == typeName ) + { + bool doAdd = true; + + if ( intersectionList ) + { + MDagPath path; + status = MDagPath::getAPathTo( fnNode.object(), path ); + + // + // We only add the item if it is in the intersectionList. + // + if ( ! intersectionList->hasItem( path ) ) + { + doAdd = false; + } + } + + if ( doAdd ) + { + list->add( fnNode.object(), mergeWithExisting ); + } + } + + itor.next(); + } +} + +//----------------------------------------------------------------------------- +// S e t W o r l d P o s i t i o n +// +// Synopsis: Sets the world position of the given node. +// +// Parameters: wp - the new world position. +// node - the node for which to set the position. +// +// Returns: Hopefully MS::kSuccess, but other MS::????? errors will occur +// if the object is not a suitable type of node. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::SetWorldPosition( const MPoint& wp, const MObject& node ) +{ + MStatus status; + + MFnDependencyNode fnNode( node ); + + // + // Attempt to get the world matrix attribute. + // + MObject attrObject = fnNode.attribute( "worldMatrix", &status ); + assert( status ); + + // + // Build the world matrix plug. Use the first element on the plug. + // + MPlug plug( const_cast<MObject&>(node), attrObject ); + plug = plug.elementByLogicalIndex( 0, &status ); + assert( status ); + + // + // Get the world matrix. We have to go through a few Maya layers on this + // one. + // + MObject matrixObject; + status = plug.getValue( matrixObject ); + assert( status ); + + MFnMatrixData matrixData( matrixObject, &status ); + assert( status ); + + // + // Create a world tranformation matrix. + // + MTransformationMatrix matrix( matrixData.matrix( &status ) ); + assert( status ); + + // + // Get the world translation vector. + // + MVector worldTranslation = matrix.translation( MSpace::kWorld, &status ); + + + // + // Get the nodes immediate transform and create a function wrapper for it. + // + MDagPath nodePath; + status = MDagPath::getAPathTo( node, nodePath ); + assert( status ); + + MObject transformObject = nodePath.transform( &status ); + assert( status ); + + MFnTransform fnTransform( transformObject, &status ); + assert( status ); + + // + // Get the node translation vector. + // + MVector nodeTranslation = fnTransform.translation( MSpace::kTransform, &status ); + + // + // The exclusive translation vector is that vector which reflect the + // amount of translation the node undergoes as a result of transforms + // exclusive of its immediate parent. + // + MVector exclusiveTranslation = worldTranslation - nodeTranslation; + + // + // Set the nodeTranslation to that or our desired world position less the + // exclusiveTranslation vector. + // + MVector position( wp ); + nodeTranslation = position - exclusiveTranslation; + + // + // Push the result back into the transform and we are done. + // + status = fnTransform.setTranslation( nodeTranslation, MSpace::kTransform ); + assert( status ); + +} + +//----------------------------------------------------------------------------- +// v i e w T o W o r l d A t Y +// +// Synopsis: Convert the specified view coordinates to world coordinates on +// the specified y plane. +// +// Parameters: world - reference parameter to recieve the world coordinates. +// view - the view position to be converted. +// y - the y plane to translate to. +// +// Returns: The status of the request. Will return failure if the the +// view plane is perpendicular to the y-plane. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MExt::ViewToWorldAtY( MPoint* wc, MPoint& vc, double y ) +{ + assert( wc ); + + MStatus status = MS::kFailure; + + M3dView view = M3dView::active3dView(); + MPoint rayOrigin; + MVector rayVector; + status = view.viewToWorld( static_cast<short>(vc.x), + static_cast<short>(vc.y), + rayOrigin, + rayVector + ); + assert( status ); + + MPoint result; + if ( fabs(rayVector.y) > EPSILON ) + { + // + // The following formulas for x and z use the point slope formula in + // the form + // x = ( y - y0 ) / M + x0 + // = ( y - y0 ) / ( dy / dx ) + x0 + // = ( ( y - y0 ) / dy ) * dx + x0 + // + double coeff = ( y - rayOrigin.y ) / rayVector.y; + wc->x = ( coeff * rayVector.x ) + rayOrigin.x; + wc->y = y; + wc->z = ( coeff * rayVector.z ) + rayOrigin.z; + } +} diff --git a/tools/globalcode/utility/MExt.h b/tools/globalcode/utility/MExt.h new file mode 100644 index 0000000..e4b6444 --- /dev/null +++ b/tools/globalcode/utility/MExt.h @@ -0,0 +1,226 @@ +#include "precompiled/PCH.h" + +#ifndef _MEXT_H +#define _MEXT_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt.h +// +// Description: Functions that extend the Maya API to perform other common +// tasks. +// +// Modification History: +// + Created Aug 21, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +/* Using precompiled headers. +#include <maya/MStringArray.h> +#include <maya/MPoint.h> +#include <maya/MObject.h> +#include <maya/MPlug.h> +*/ + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "MExt_template.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- +class MString; +class MDagPath; +class MArgList; +class MPlug; +class MObject; +class MSelectionList; +class MTypeId; +class MDoubleArray; + +//---------------------------------------- +// Macros +//---------------------------------------- +#define RETURN_STATUS_ON_FAILURE( STATUS ) if ( ! (STATUS) ) return (STATUS) +#define RETURN_FALSE_ON_FAILURE( STATUS ) if ( ! (STATUS) ) return false + +//These are used when dealing with plugs. +#define AS_DEST true, false +#define AS_SOURCE false, true +#define AS_BOTH true, true +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + + + +namespace MExt +{ + namespace Attr + { + void GetScaled( MPoint*, const MObject& node, const MObject& attr ); + + void SetScaled( const MPoint&, MObject& node, MObject& attr ); + + void SetScaled( const MPoint&, MObject& node, const MString& attr ); + + } // namespace Attr + + namespace OptionVar + { + bool Get( char* buffer, unsigned int buffer_size, const char* symbol ); + + void Set( const char* buffer, const char* symbol ); + + } // namespace OptionVar + + + class OptionParser + { + public: + + OptionParser( const char* command, const MArgList& args ); + ~OptionParser(); + + void setOptions( const char* optionSpec ); + int nextOption(); + MString getArg(); + + private: + + int m_argc; + char** m_argv; + char* m_opt; + + }; + + + void AddChild( MObject& parentLocatorNode, MObject& childLocatorNode ); + + void Connect( MObject& node, + MObject& attr, + MObject& otherNode, + MObject& otherAttr + ); + + void Connect( MObject& node, + const char* attr, + MObject& otherNode, + const char* otherAttr + ); + + + void CreateNode( MObject* node, + MObject* transform, + const MString& type, + const MString* name = 0, + const MObject& parent = MObject::kNullObj + ); + + void CreateNode( MObject& node, + MObject& transform, + const MString& type, + const MString* name = 0, + const MObject& parent = MObject::kNullObj + ); + + + void CreateVertexAttribute( MObject* attr, + const char* name, + const char* brief_name + ); + + void DeleteNode( MObject& node, bool deleteParent ); + + void DisconnectAll( MObject& node, MObject& attr ); + void DisconnectAll( MObject& node, const char* attrName ); + + int DisplayError( const char* fmt, ... ); + + int DisplayWarning( const char* fmt, ... ); + + int DisplayInfo( const char* fmt, ... ); + + void FilterSelectionList( MSelectionList* filteredList, + const MString& typeName, + const MSelectionList& sourceList + ); + + bool FindAllSkeletonRoots( MObjectArray* objects ); + + bool FindAllTransforms( MObjectArray* transforms, const MObject& root ); + + + bool FindDagNodeByName( MDagPath* path, + const MString& node, + const MObject& root = MObject::kNullObj + ); + + bool FindDagNodeByName( MDagPath* path, + const MString& node, + const MString& root + ); + + void GetWorldPosition( MPoint*, const MObject& node ); + + MPoint GetWorldPositionBetween( MObject& node1, MObject& node2 ); + + MMatrix GetWorldMatrix( MObject& node ); + + bool IsConnected( MObject& node, const char* attr ); + bool IsConnected( MObject& node, MObject& attr ); + bool IsConnected( MPlug& plug1, MPlug& plug2 ); + + void MakeNameUnique( MString* unique, + const MString& name, + const MObject& root = MObject::kNullObj + ); + + void MakeNameUnique( MString* unique, + const MString& name, + const MString& root + ); + + bool MeshClickIntersect( short xClick, short yClick, MPoint& intersect, bool closest = true ); + + bool MeshIntersectAlongVector( MPoint from, MPoint direction, MPoint& intersect, bool closest = true ); + + bool PlugHasConnection( MObject* connectedNode, + MPlug& plug, + bool asDst = true, + bool asSrc = true, + const char* type = 0 + ); + + bool PlugHasConnection( MPlug* connectedPlug, + MPlug& plug, + bool asDst = true, + bool asSrc = true, + const char* type = 0 + ); + + + void ResolveConnections( MPlugArray* sources, + MPlugArray* targets, + MPlug& plug, + bool asDst = true, + bool asSrc = true + ); + + + void SelectNodesBelowRoot( MSelectionList* list, + const MString& typeName, + const MObject& root = MObject::kNullObj, + MSelectionList* intersectionList = 0 + ); + + void SetWorldPosition( const MPoint&, const MObject& node ); + + void ViewToWorldAtY( MPoint* world, MPoint& view, double y = 0.0 ); + +} // namespace MExt + +#endif diff --git a/tools/globalcode/utility/MExt_template.cpp b/tools/globalcode/utility/MExt_template.cpp new file mode 100644 index 0000000..c01fee2 --- /dev/null +++ b/tools/globalcode/utility/MExt_template.cpp @@ -0,0 +1,273 @@ +#include "precompiled/PCH.h" + +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt_template.cpp +// +// Description: +// +// Modification History: +// + Created Dec 19, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "MExt_template.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +//----------------------------------------------------------------------------- +// G e t < MDoubleArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Get< MDoubleArray >( MDoubleArray* array, const MPlug& plug ) +{ + assert( array ); + + MStatus status; + + MObject data; + status = plug.getValue( data ); + assert( status ); + + MFnDoubleArrayData fnArray( data, &status ); + assert( status ); + + MDoubleArray myArray = fnArray.array( &status ); + assert( status ); + + array->clear(); + unsigned int i; + for ( i = 0; i < myArray.length(); i++ ) + { + array->append( myArray[i] ); + } +} + +//----------------------------------------------------------------------------- +// G e t < MIntArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Get< MIntArray >( MIntArray* array, const MPlug& plug ) +{ + assert( array ); + + MStatus status; + + MObject data; + status = plug.getValue( data ); + assert( status ); + + MFnIntArrayData fnArray( data, &status ); + assert( status ); + + MIntArray myArray = fnArray.array( &status ); + assert( status ); + + array->clear(); + unsigned int i; + for ( i = 0; i < myArray.length(); i++ ) + { + array->append( myArray[i] ); + } +} +//----------------------------------------------------------------------------- +// G e t < MPoint > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Get< MPoint >( MPoint* vertex, const MPlug& plug ) +{ + assert( vertex ); + + MDoubleArray coordinates; + Get( &coordinates, plug ); + + if ( coordinates.length() > 0 ) + { + assert( coordinates.length() == 3 ); + vertex->x = coordinates[0]; + vertex->y = coordinates[1]; + vertex->z = coordinates[2]; + } + else + { + *vertex = MPoint::origin; + } +} + +//----------------------------------------------------------------------------- +// G e t < MStringArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Get< MStringArray >( MStringArray* array, const MPlug& plug ) +{ + assert( array ); + + MStatus status; + + MObject data; + status = plug.getValue( data ); + assert( status ); + + MFnStringArrayData fnArray( data, &status ); + assert( status ); + + MStringArray myArray = fnArray.array( &status ); + assert( status ); + + array->clear(); + unsigned int i; + for ( i = 0; i < myArray.length(); i++ ) + { + array->append( myArray[i] ); + } +} + +//----------------------------------------------------------------------------- +// S e t < MDoubleArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Set< MDoubleArray >( const MDoubleArray& array, MPlug& plug ) +{ + MStatus status; + + MFnDoubleArrayData fnArray; + MObject object = fnArray.create( array, &status ); + assert( status ); + + status = plug.setValue( object ); + assert( status ); +} + +//----------------------------------------------------------------------------- +// S e t < MIntArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Set< MIntArray >( const MIntArray& array, MPlug& plug ) +{ + MStatus status; + + MFnIntArrayData fnArray; + MObject object = fnArray.create( array, &status ); + assert( status ); + + status = plug.setValue( object ); + assert( status ); +} + +//----------------------------------------------------------------------------- +// S e t < MPoint > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Set< MPoint >( const MPoint& vertex, MPlug& plug ) +{ + MStatus status; + + MDoubleArray coordinates; + coordinates.append( vertex.x ); + coordinates.append( vertex.y ); + coordinates.append( vertex.z ); + + Set( coordinates, plug ); +} + +//----------------------------------------------------------------------------- +// S e t < MStringArray > +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +template < > +void MExt::Attr::Set< MStringArray >( const MStringArray& array, MPlug& plug ) +{ + MStatus status; + + MFnStringArrayData fnArray; + MObject object = fnArray.create( array, &status ); + assert( status ); + + status = plug.setValue( object ); + assert( status ); +} + diff --git a/tools/globalcode/utility/MExt_template.h b/tools/globalcode/utility/MExt_template.h new file mode 100644 index 0000000..5714e95 --- /dev/null +++ b/tools/globalcode/utility/MExt_template.h @@ -0,0 +1,146 @@ +#include "precompiled/PCH.h" + +#ifndef _MEXT_TEMPLATE_H +#define _MEXT_TEMPLATE_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt_template.h +// +// Description: +// +// Modification History: +// + Created Dec 19, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//This is a warning provided by the STL... It seems that toollib gets whacky when there +//is other templates made... Sigh... +#pragma warning(disable:4786) + +//---------------------------------------- +// System Includes +//---------------------------------------- +//#include <assert.h> + +/* Using precompiled headers +#include <maya/MDoubleArray.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MIntArray.h> +#include <maya/MObject.h> +#include <maya/MPlug.h> +#include <maya/MPoint.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +*/ + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +namespace MExt +{ + namespace Attr + { + + template < class T > + void Get( T* value, const MPlug& plug ) + { + assert( value ); + + MStatus status; + + status = plug.getValue( *value ); + assert( status ); + } + + template < > + void Get< MDoubleArray >( MDoubleArray*, const MPlug& ); + + template < > + void Get< MIntArray >( MIntArray*, const MPlug& ); + + template < > + void Get< MPoint >( MPoint*, const MPlug& ); + + template < > + void Get< MStringArray >( MStringArray*, const MPlug& ); + + template < class T > + void Get( T* value, const MObject& node, const MObject& attr ) + { + MPlug plug( node, attr ); + Get( value, plug ); + } + + template < class T > + void Get( T* value, const MObject& node, const MString& attr ) + { + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + Get( value, plug ); + } + + template < class T > + void Set( const T& value, MPlug& plug ) + { + MStatus status; + + status = plug.setValue( const_cast<T&>(value) ); + assert( status ); + } + + template < > + void Set< MDoubleArray >( const MDoubleArray& array, MPlug& plug ); + + template < > + void Set< MIntArray >( const MIntArray& array, MPlug& plug ); + + template < > + void Set< MPoint >( const MPoint& vertex, MPlug& plug ); + + template < > + void Set< MStringArray >( const MStringArray& array, MPlug& plug ); + + template < class T > + void Set( const T& value, MObject& node, MObject& attr ) + { + MPlug plug( node, attr ); + Set( value, plug ); + } + + template < class T > + void Set( const T& value, MObject& node, const MString& attr ) + { + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + Set( value, plug ); + } + + } // namespace Attr + +} // namespace MExt + +#endif diff --git a/tools/globalcode/utility/MUI.cpp b/tools/globalcode/utility/MUI.cpp new file mode 100644 index 0000000..4cd4a8d --- /dev/null +++ b/tools/globalcode/utility/MUI.cpp @@ -0,0 +1,220 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MUI.cpp +// +// Description: Container class for custom UI windows for use in Maya. +// +// Modification History: +// + Created Sep 30, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <assert.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "stdafx.h" +#include "MUI.h" +#include "util.h" +#include "mayahandles.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + + +//----------------------------------------------------------------------------- +// c o n f i r m +// +// Synopsis: Present a modal confirmation box to the user. +// +// Parameters: message - the message to display in the box. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int MUI::ConfirmDialog( const char* message ) +{ + UINT style = MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON1 | MB_TASKMODAL ; + int button = MessageBox( 0, message, "MUI Confirmation", style ); + + int result = MUI::YES; + if ( IDNO == button ) result = MUI::NO; + if ( IDCANCEL == button ) result = MUI::CANCEL; + + return result; +} + +//----------------------------------------------------------------------------- +// E r r o r D i a l o g +// +// Synopsis: Present a modal error dialog box to the user. +// +// Parameters: message - the message to display in the box. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MUI::ErrorDialog( const char* message ) +{ + UINT style = MB_OK | MB_ICONERROR | MB_TASKMODAL; + MessageBox( 0, message, "MUI Error", style ); +} + +//----------------------------------------------------------------------------- +// E r r o r D i a l o g +// +// Synopsis: Present a modal error dialog box to the user. +// +// Parameters: message - the message to display in the box. +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MUI::InfoDialog( const char* message ) +{ + UINT style = MB_OK | MB_ICONINFORMATION | MB_TASKMODAL; + MessageBox( 0, message, "MUI Info", style ); +} + +//----------------------------------------------------------------------------- +// F i l e D i a l o g +// +// Synopsis: Present the user with a file browser window to select a file for +// open or save. +// +// Parameters: filePath - a reference parameter to receive the full +// file path from the dialog. If not NULL on +// input, the initial value is used as the +// starting location for the dialog. +// filePathSize - the maximum length of the filePath buffer. +// dialogTitle - the caption to appear in the dialog title +// bar. +// extensionFilter - A filter specifiying the types of files that +// are eligilble for selection. It must end +// in "||" with all entries separated by "|". +// Generally entries will be in pairs; the +// first is a type description and the second +// is the actual filter. e.g./ +// "Raddle Data(*.rdl)|*.rdl|All Files(*.*)|*.*||". +// defaultExtension - if not NULL, then the given extension will +// automatically appended to an extensionless +// entry in the Filename box. +// broserType - OPEN | SAVE. Default is OPEN. +// +// Returns: true, if a filePath is set; false if the dialog is cancelled. +// +// Notes: The filePath will have "/" slashes and not "\" slashes on return. +// +//----------------------------------------------------------------------------- +bool MUI::FileDialog( char* filePath, int filePathSize, + const char* windowTitle, + const char* extensionFilter, + const char* defaultExtension, + int browserType + ) +{ + // + // We do need the file path to have windows backslashes. + // + util_replaceCharacters('/', '\\', filePath ); + + bool isOk = false; + + BOOL doOpen; + DWORD flags = 0; + + switch ( browserType ) + { + case MUI::SET: + { + doOpen = TRUE; + flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; + break; + } + + case MUI::SAVE: + { + doOpen = FALSE; + flags = OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; + break; + } + + default: // MUI::OPEN + { + doOpen = TRUE; + flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; + break; + + } + } + + // + // Set the AFX handle to maya's application instance handle. + // + HINSTANCE handle = static_cast<HINSTANCE>(MayaHandles::GetHInstance()); + AfxSetResourceHandle( handle ); + + // + // Create the dialog + // + CFileDialog fileDialog( doOpen, + defaultExtension, + filePath, + flags, + extensionFilter, + NULL + ); + + if ( windowTitle ) fileDialog.m_ofn.lpstrTitle = windowTitle; + + // + // Show the dialog and wait for a response. + // + int result = fileDialog.DoModal(); + if ( IDOK == result ) + { + const char* filename = LPCSTR( fileDialog.GetPathName() ); + strncpy( filePath, LPCSTR( fileDialog.GetPathName() ), filePathSize ); + util_replaceCharacters('\\', '/', filePath ); + isOk = true; + } + + return isOk; +} + +//============================================================================= +// MUI::PopupDialogue +//============================================================================= +// Description: Comment +// +// Parameters: ( int id, DLGPROC callBack ) +// +// Return: void +// +//============================================================================= +void MUI::PopupDialogue( int id, DLGPROC callBack ) +{ + HINSTANCE handle = static_cast<HINSTANCE>(MayaHandles::GetHInstance()); + AfxSetResourceHandle( handle ); + + HWND hWnd = static_cast<HWND>(MayaHandles::GetHWND()); + + DialogBox( handle, MAKEINTRESOURCE(id), hWnd, callBack ); +} + + diff --git a/tools/globalcode/utility/MUI.h b/tools/globalcode/utility/MUI.h new file mode 100644 index 0000000..e991cf7 --- /dev/null +++ b/tools/globalcode/utility/MUI.h @@ -0,0 +1,82 @@ +#ifndef _MUI_HPP +#define _MUI_HPP +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MUI.hpp +// +// Description: Container class for custom UI windows for use in Maya. +// +// Modification History: +// + Created Sep 30, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +//This is an example callback. +inline BOOL CALLBACK PopupCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + return true; + } + break; + default: + { +// EndDialog( hWnd, 0); //this is how you close the window. + return false; + } + break; + } +} + + +class MUI +{ + public: + + enum { + YES, + NO, + CANCEL, + SAVE, + SET, + NEW, + OPEN + }; + + static int ConfirmDialog( const char* message ); + + static bool FileDialog( char* filePath, int filePathSize, + const char* windowTitle = 0, + const char* extensionFilter = 0, + const char* defaultExtension = 0, + int browserType = MUI::OPEN + ); + + static void ErrorDialog( const char* message ); + + static void InfoDialog( const char* message ); + + static void PopupDialogue( int id, DLGPROC callBack ); + + private: +}; + +#endif diff --git a/tools/globalcode/utility/mayahandles.cpp b/tools/globalcode/utility/mayahandles.cpp new file mode 100644 index 0000000..e0cb824 --- /dev/null +++ b/tools/globalcode/utility/mayahandles.cpp @@ -0,0 +1,105 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// mayahandles.cpp +// +// Description: Class to store and retrieve maya handles as generic pointers. +// +// Modification History: +// + Created Oct 15, 2001 -- bkusy +// + More MFC goodness -- Cary Brisebois +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "mayahandles.h" +#include "stdafx.h" +#include "maya/mglobal.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- +void* MayaHandles::m_hInstance = 0; +void* MayaHandles::m_HWND = 0; + +BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) +{ + char str[1024]; + ::GetWindowText(hwnd, str, 1024); + + MString mayaVersion = MGlobal::mayaVersion(); + + char version[256]; + sprintf( version, "Maya %s", mayaVersion.asChar() ); + + if(strncmp(str, version, strlen(version)) == 0) //This is silly. + { + *(HWND*)lParam = hwnd; + return FALSE; + } + return TRUE; +} + + +//----------------------------------------------------------------------------- +// S e t H I n s t a n c e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void MayaHandles::SetHInstance( void* hInstance ) +{ + m_hInstance = hInstance; +} + +//----------------------------------------------------------------------------- +// G e t H I n s t a n c e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* MayaHandles::GetHInstance() +{ + return m_hInstance; +} + +void* MayaHandles::GetHWND() +{ + if ( m_HWND == 0 ) + { + HWND hWnd = NULL; + EnumChildWindows(::GetDesktopWindow(), EnumChildProc, (long)&hWnd); + if(hWnd == NULL) + { + // houston we have a problem + MGlobal::displayError("can't find Maya window"); + } + else + { + m_HWND = hWnd; + } + } + + return m_HWND; +}
\ No newline at end of file diff --git a/tools/globalcode/utility/mayahandles.h b/tools/globalcode/utility/mayahandles.h new file mode 100644 index 0000000..9e530ba --- /dev/null +++ b/tools/globalcode/utility/mayahandles.h @@ -0,0 +1,42 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// mayahandles.h +// +// Description: Class to store and retrieve maya handles as generic pointers. +// +// Modification History: +// + Created Oct 15, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +class MayaHandles +{ + public: + + static void SetHInstance( void* hInstance ); + static void* GetHInstance(); + + static void* GetHWND(); + + private: + + static void* m_hInstance; + static void* m_HWND; +}; + diff --git a/tools/globalcode/utility/nodehelper.h b/tools/globalcode/utility/nodehelper.h new file mode 100644 index 0000000..ef0842a --- /dev/null +++ b/tools/globalcode/utility/nodehelper.h @@ -0,0 +1,37 @@ +#ifndef NODE_HELPERS + +#include "precompiled/PCH.h" + +namespace NodeHelper +{ + +inline int OverrideNodeColour( MObject& node, int defaultColour ) +{ + int colour = defaultColour; + + MStatus status; + MFnDagNode fnDag( node ); + MPlug overColour = fnDag.findPlug( MString( "overrideColor" ), &status ); + if ( status ) + { + overColour.getValue( colour ); + if ( colour != 0 ) //The override is Active... + { + colour--; + if ( colour < 0 ) + { + colour = 0; + } + } + else + { + colour = defaultColour; + } + } + + return colour; +} + +}; + +#endif
\ No newline at end of file diff --git a/tools/globalcode/utility/overlaymarquee.cpp b/tools/globalcode/utility/overlaymarquee.cpp new file mode 100644 index 0000000..7d97b77 --- /dev/null +++ b/tools/globalcode/utility/overlaymarquee.cpp @@ -0,0 +1,222 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// marquee.cpp +// +// Description: +// +// Modification History: +// + Created Jun 14, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <windows.h> +#include <assert.h> + +#include <GL/gl.h> +#include <GL/glu.h> +#include <GL/glaux.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "overlaymarquee.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Define Owning Namespace +//---------------------------------------- +namespace GLObj { + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +//----------------------------------------------------------------------------- +// M a r q u e e +// +// Synopsis: Constructor +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +OverlayMarquee::OverlayMarquee() : + m_xStart( 0 ), + m_yStart( 0 ), + m_xEnd( 0 ), + m_yEnd( 0 ) +{ +} + +//----------------------------------------------------------------------------- +// ~ M a r q u e e +// +// Synopsis: Destructor +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +OverlayMarquee::~OverlayMarquee() +{ +} + +//----------------------------------------------------------------------------- +// B e g i n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void OverlayMarquee::Begin( M3dView& view, short xStart, short yStart ) +{ + m_View = view; + m_xStart = xStart; + m_yStart = yStart; + m_View.beginGL(); + m_View.beginOverlayDrawing(); +} + +//----------------------------------------------------------------------------- +// D r a w +// +// Synopsis: Draw a marquee with the given coordinates. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void OverlayMarquee::Draw( short xEnd, short yEnd ) +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + m_xEnd = xEnd; + m_yEnd = yEnd; + + // + // Clearing the overlay plane doesn't seem to work, but swapping buffers does + // so we'll use that instead. You've gotta luv Maya bugs -- embrace them + // don't squash them. + // + m_View.clearOverlayPlane(); + SwapBuffers( m_View.deviceContext() ); + + // + // Setup the orthographic projection matrix. + // + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + gluOrtho2D( 0.0, (GLdouble)m_View.portWidth(), 0.0, (GLdouble)m_View.portHeight() ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + glTranslatef( 0.375, 0.375, 0.0 ); + + // + // Retrieve GL State. + // + float lineWidth; + unsigned char lineSmoothedFlag; + glGetFloatv( GL_LINE_WIDTH, &lineWidth ); + glGetBooleanv( GL_LINE_SMOOTH, &lineSmoothedFlag ); + + // + // Set line style. + // + glLineStipple( 1, 0x5555 ); + glLineWidth( 1.0 ); + glEnable( GL_LINE_STIPPLE ); + glEnable( GL_LINE_SMOOTH ); + glIndexi( 2 ); + + // + // Draw marquee. + // + glBegin( GL_LINES ); + + glVertex2i( m_xStart, m_yEnd ); // Left Side. + glVertex2i( m_xStart, m_yStart ); + + glVertex2i( m_xStart, m_yStart );// Top + glVertex2i( m_xEnd, m_yStart ); + + glVertex2i( m_xEnd, m_yStart ); // Right Side. + glVertex2i( m_xEnd, m_yEnd ); + + glVertex2i( m_xEnd, m_yEnd ); // Bottom. + glVertex2i( m_xStart, m_yEnd ); + + glEnd(); + + // + // Don't swap the display buffers. A bug in Maya causes the display to be + // cleared -- making the flicker worse. + // + //SwapBuffers( m_View.deviceContext() ); + + // + // Instead just flush the GL buffers. + // + glFlush(); + + + // + // Restore GL state. + glLineWidth( lineWidth ); + if ( !lineSmoothedFlag ) glDisable( GL_LINE_SMOOTH ); + glDisable( GL_LINE_STIPPLE ); + + glPopAttrib(); +} + +//----------------------------------------------------------------------------- +// R e d r a w +// +// Synopsis: Draw a marquee with the last given coordinates. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void OverlayMarquee::Redraw() +{ + Draw( m_xEnd, m_yEnd ); +} + +void OverlayMarquee::End() +{ + m_View.endOverlayDrawing(); + m_View.endGL(); + + // + // Use the Maya bug to get rid of any drawing we have done. + // + SwapBuffers( m_View.deviceContext() ); +} + +} // namespace GLObj + + + + diff --git a/tools/globalcode/utility/overlaymarquee.h b/tools/globalcode/utility/overlaymarquee.h new file mode 100644 index 0000000..b900083 --- /dev/null +++ b/tools/globalcode/utility/overlaymarquee.h @@ -0,0 +1,55 @@ +#include "precompiled/PCH.h" + +#ifndef _GLOBJ_OVERLAYMARQUEE_H +#define _GLOBJ_OVERLAYMARQUEE_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// overlaymarquee.h +// +// Description: Draw a marquee using openGL. +// +// Modification History: +// + Created Jun 14, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- +//#include <maya/M3dView.h> + +//---------------------------------------- +// Forward References +//---------------------------------------- +//---------------------------------------- +// Define Owning Namespace +//---------------------------------------- +namespace GLObj { + +class OverlayMarquee +{ + public: + + OverlayMarquee(); + ~OverlayMarquee(); + + void Begin( M3dView& view, short xStart, short yStart ); + void Draw( short xEnd, short yEnd ); + void Redraw(); + void End(); + + private: + OverlayMarquee(OverlayMarquee &); + OverlayMarquee &operator=(OverlayMarquee &); + + M3dView m_View; + short m_xStart, m_yStart, m_xEnd, m_yEnd; +}; + +} // GLObj namespace. + +#endif diff --git a/tools/globalcode/utility/stdafx.h b/tools/globalcode/utility/stdafx.h new file mode 100644 index 0000000..3152a3f --- /dev/null +++ b/tools/globalcode/utility/stdafx.h @@ -0,0 +1,19 @@ +#ifndef STDAFX +#define STDAFX + +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// stdafx.h +// +// Description: Header wrapper for using MFC. +// +// Modification History: +// + Created Oct 12, 2001 -- bkusy +//----------------------------------------------------------------------------- +#define VC_EXTRALEAN +#include <afxwin.h> +#include <afxdlgs.h> + + +#endif
\ No newline at end of file diff --git a/tools/globalcode/utility/transformmatrix.cpp b/tools/globalcode/utility/transformmatrix.cpp new file mode 100644 index 0000000..1264fff --- /dev/null +++ b/tools/globalcode/utility/transformmatrix.cpp @@ -0,0 +1,904 @@ +/*=========================================================================== + transformmatrix.cpp + Created: October 16, 2000 + Auuthor: Bryan Brandt + + Copyright (c) 2000 Radical Entertainment, Inc. + All rights reserved. +===========================================================================*/ + +//#include <maya/MFnTransform.h> +//#include <maya/MPoint.h> +//#include <maya/MQuaternion.h> +//#include <maya/MEulerRotation.h> +//#include <maya/MVector.h> +//#include <maya/MDagPath.h> +//#include <maya/MFnIkJoint.h> +//#include <maya/MPlug.h> + +#include "transformmatrix.h" + + +TransformMatrix::TransformMatrix(): + rotateOrder(ORDER_XYZ) +{ + SetIdentity(); +} + + +TransformMatrix::TransformMatrix(const MDagPath& dagPath): + rotateOrder(ORDER_XYZ) +{ + SetIdentity(); + Assign(dagPath); +} + + +TransformMatrix::TransformMatrix(const MTransformationMatrix& xform): + rotateOrder(ORDER_XYZ) +{ + SetIdentity(); + Assign(xform); +} + + +bool TransformMatrix::Assign(const MDagPath& dagPath) +{ + MStatus status; + + MObject node = dagPath.node(&status); + if (!status) + return false; + + if (node.hasFn(MFn::kJoint)) + { + MDagPath tmpDagPath = dagPath; + return AssignJoint(tmpDagPath, node); + } + else if (node.hasFn(MFn::kTransform)) + { + MFnTransform xformNode(dagPath, &status); + if (!status) + return false; + + MTransformationMatrix xform = xformNode.transformation(&status); + if (!status) + return false; + + return Assign(xform); + } + + return false; +} + + +bool TransformMatrix::AssignJoint(MDagPath& dagPath, MObject& node) +{ + MStatus status; + + MFnIkJoint jointNode(node, &status); + if (!status) + return false; + + double tmp[3]; + MQuaternion tmpQuat; + MEulerRotation tmpEuler; + MVector tmpVector; + + scalePivot.x = 0.0f; + scalePivot.y = 0.0f; + scalePivot.z = 0.0f; + + status = jointNode.getScale(tmp); + if (!status) + return false; + scaleX = (float)tmp[0]; + scaleY = (float)tmp[1]; + scaleZ = (float)tmp[2]; + + // we've officially updated a scale dependency, + // so set the scale matrix dirty flag + scaleDirty = true; + + shearXY = 0.0f; + shearXZ = 0.0f; + shearYZ = 0.0f; + + scalePivotTranslate.x = 0.0f; + scalePivotTranslate.y = 0.0f; + scalePivotTranslate.z = 0.0f; + + rotatePivot.x = 0.0f; + rotatePivot.y = 0.0f; + rotatePivot.z = 0.0f; + + // we've officially updated a hierarchy dependency, + // so set the hierarchy matrix dirty flag + hierarchyDirty = true; + + status = jointNode.getScaleOrientation(tmpQuat); + if (!status) + return false; + tmpEuler = tmpQuat.asEulerRotation(); + tmpEuler.reorderIt(MEulerRotation::kXYZ); + rotateAxisX = (float)tmpEuler.x; + rotateAxisY = (float)tmpEuler.y; + rotateAxisZ = (float)tmpEuler.z; + + MTransformationMatrix::RotationOrder ro; + jointNode.getRotation(tmp, ro); + switch (ro) + { + case MTransformationMatrix::kXYZ: + rotateOrder = ORDER_XYZ; + break; + case MTransformationMatrix::kYZX: + rotateOrder = ORDER_YZX; + break; + case MTransformationMatrix::kZXY: + rotateOrder = ORDER_ZXY; + break; + case MTransformationMatrix::kXZY: + rotateOrder = ORDER_XZY; + break; + case MTransformationMatrix::kYXZ: + rotateOrder = ORDER_YXZ; + break; + case MTransformationMatrix::kZYX: + rotateOrder = ORDER_ZYX; + break; + + default: + return false; + } + + rotateX = (float)tmp[0]; + rotateY = (float)tmp[1]; + rotateZ = (float)tmp[2]; + + rotatePivotTranslate.x = 0.0f; + rotatePivotTranslate.y = 0.0f; + rotatePivotTranslate.z = 0.0f; + + status = jointNode.getOrientation(tmpEuler); + tmpEuler.reorderIt(MEulerRotation::kXYZ); + jointOrientX = (float)tmpEuler.x; + jointOrientY = (float)tmpEuler.y; + jointOrientZ = (float)tmpEuler.z; + + // default inverseScale to identity + inverseScaleX = 1.0f; + inverseScaleY = 1.0f; + inverseScaleZ = 1.0f; + + // retrieve the segment scale compensate attribute + MFnDependencyNode depNode(node, &status); + if (!status) + return false; + + MPlug plug = depNode.findPlug("segmentScaleCompensate", &status); + if (!status) + return false; + + bool segmentScaleCompensate; + status = plug.getValue(segmentScaleCompensate); + if (!status) + return false; + + // if we are compensating for parent scale, do so + if (segmentScaleCompensate) + { + plug = depNode.findPlug("inverseScaleX", &status); + if (!status) + return false; + status = plug.getValue(inverseScaleX); + if (!status) + return false; + if (inverseScaleX != 0.0f) + inverseScaleX = (1.0f / inverseScaleX); + + plug = depNode.findPlug("inverseScaleY", &status); + if (!status) + return false; + status = plug.getValue(inverseScaleY); + if (!status) + return false; + if (inverseScaleY != 0.0f) + inverseScaleY = (1.0f / inverseScaleY); + + plug = depNode.findPlug("inverseScaleZ", &status); + if (!status) + return false; + status = plug.getValue(inverseScaleZ); + if (!status) + return false; + if (inverseScaleZ != 0.0f) + inverseScaleZ = (1.0f / inverseScaleZ); + } + + tmpVector = jointNode.translation(MSpace::kWorld, &status); + if (!status) + return false; + translate.x = (float)tmpVector.x; + translate.y = (float)tmpVector.y; + translate.z = (float)tmpVector.z; + + return true; +} + + +bool TransformMatrix::Assign(const MTransformationMatrix& xform) +{ + MStatus status; + MPoint tmpPoint; + double tmpArray[3]; + MQuaternion tmpQuat; + MEulerRotation tmpEuler; + MVector tmpVector; + + tmpPoint = xform.scalePivot(MSpace::kWorld, &status); + if (!status) + return false; + scalePivot.x = (float)tmpPoint.x; + scalePivot.y = (float)tmpPoint.y; + scalePivot.z = (float)tmpPoint.z; + + // we've officially updated a scale dependency, + // so set the scale matrix dirty flag + scaleDirty = true; + + status = xform.getScale(tmpArray, MSpace::kWorld); + if (!status) + return false; + scaleX = (float)tmpArray[0]; + scaleY = (float)tmpArray[1]; + scaleZ = (float)tmpArray[2]; + + status = xform.getShear(tmpArray, MSpace::kWorld); + if (!status) + return false; + shearXY = (float)tmpArray[0]; + shearXZ = (float)tmpArray[1]; + shearYZ = (float)tmpArray[2]; + + tmpPoint = xform.scalePivotTranslation(MSpace::kWorld, &status); + if (!status) + return false; + scalePivotTranslate.x = (float)tmpPoint.x; + scalePivotTranslate.y = (float)tmpPoint.y; + scalePivotTranslate.z = (float)tmpPoint.z; + + tmpPoint = xform.rotatePivot(MSpace::kWorld, &status); + if (!status) + return false; + rotatePivot.x = (float)tmpPoint.x; + rotatePivot.y = (float)tmpPoint.y; + rotatePivot.z = (float)tmpPoint.z; + + // we've officially updated a hierarchy dependency, + // so set the hierarchy matrix dirty flag + hierarchyDirty = true; + + tmpQuat = xform.rotationOrientation(); + tmpEuler = tmpQuat.asEulerRotation(); + tmpEuler.reorderIt(MEulerRotation::kXYZ); + rotateAxisX = (float)tmpEuler.x; + rotateAxisY = (float)tmpEuler.y; + rotateAxisZ = (float)tmpEuler.z; + + MTransformationMatrix::RotationOrder ro = xform.rotationOrder(); + switch (ro) + { + case MTransformationMatrix::kXYZ: + rotateOrder = ORDER_XYZ; + break; + case MTransformationMatrix::kYZX: + rotateOrder = ORDER_YZX; + break; + case MTransformationMatrix::kZXY: + rotateOrder = ORDER_ZXY; + break; + case MTransformationMatrix::kXZY: + rotateOrder = ORDER_XZY; + break; + case MTransformationMatrix::kYXZ: + rotateOrder = ORDER_YXZ; + break; + case MTransformationMatrix::kZYX: + rotateOrder = ORDER_ZYX; + break; + + default: + return false; + } + + tmpQuat = xform.rotation(); + tmpEuler = tmpQuat.asEulerRotation(); + switch (rotateOrder) + { + case ORDER_XYZ: + tmpEuler.reorderIt(MEulerRotation::kXYZ); + break; + case ORDER_YZX: + tmpEuler.reorderIt(MEulerRotation::kYZX); + break; + case ORDER_ZXY: + tmpEuler.reorderIt(MEulerRotation::kZXY); + break; + case ORDER_XZY: + tmpEuler.reorderIt(MEulerRotation::kXZY); + break; + case ORDER_YXZ: + tmpEuler.reorderIt(MEulerRotation::kYXZ); + break; + case ORDER_ZYX: + tmpEuler.reorderIt(MEulerRotation::kZYX); + break; + + default: + return false; + } + rotateX = (float)tmpEuler.x; + rotateY = (float)tmpEuler.y; + rotateZ = (float)tmpEuler.z; + + tmpVector = xform.rotatePivotTranslation(MSpace::kWorld, &status); + if (!status) + return false; + rotatePivotTranslate.x = (float)tmpVector.x; + rotatePivotTranslate.y = (float)tmpVector.y; + rotatePivotTranslate.z = (float)tmpVector.z; + + // only used in joints + jointOrientX = 0.0f; + jointOrientY = 0.0f; + jointOrientZ = 0.0f; + + // only used in joints + inverseScaleX = 1.0f; + inverseScaleY = 1.0f; + inverseScaleZ = 1.0f; + + tmpVector = xform.translation(MSpace::kWorld, &status); + if (!status) + return false; + translate.x = (float)tmpVector.x; + translate.y = (float)tmpVector.y; + translate.z = (float)tmpVector.z; + + return true; +} + + +void TransformMatrix::SetScalePivot(const tlPoint& sp) +{ + scalePivot = sp; + scaleDirty = true; +} + + +void TransformMatrix::SetScale(float x, float y, float z) +{ + scaleX = x; + scaleY = y; + scaleZ = z; + scaleDirty = true; +} + + +void TransformMatrix::SetScaleX(float x) +{ + scaleX = x; + scaleDirty = true; +} + + +void TransformMatrix::SetScaleY(float y) +{ + scaleY = y; + scaleDirty = true; +} + + +void TransformMatrix::SetScaleZ(float z) +{ + scaleZ = z; + scaleDirty = true; +} + + +void TransformMatrix::SetShear(float xy, float xz, float yz) +{ + shearXY = xy; + shearXZ = xz; + shearYZ = yz; + scaleDirty = true; +} + + +void TransformMatrix::SetShearXY(float xy) +{ + shearXY = xy; + scaleDirty = true; +} + + +void TransformMatrix::SetShearXZ(float xz) +{ + shearXZ = xz; + scaleDirty = true; +} + + +void TransformMatrix::SetShearYZ(float yz) +{ + shearYZ = yz; + scaleDirty = true; +} + + +void TransformMatrix::SetScalePivotTranslate(float x, float y, float z) +{ + scalePivotTranslate.x = x; + scalePivotTranslate.y = y; + scalePivotTranslate.z = z; + scaleDirty = true; +} + + +void TransformMatrix::SetScalePivotTranslate(const tlPoint& spt) +{ + scalePivotTranslate = spt; + scaleDirty = true; +} + + +void TransformMatrix::SetScalePivotX(float x) +{ + scalePivotTranslate.x = x; + scaleDirty = true; +} + + +void TransformMatrix::SetScalePivotY(float y) +{ + scalePivotTranslate.y = y; + scaleDirty = true; +} + + +void TransformMatrix::SetScalePivotZ(float z) +{ + scalePivotTranslate.z = z; + scaleDirty = true; +} + + +void TransformMatrix::SetRotatePivot(float x, float y, float z) +{ + rotatePivot.x = x; + rotatePivot.y = y; + rotatePivot.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivot(const tlPoint& rp) +{ + rotatePivot = rp; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotX(float x) +{ + rotatePivot.x = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotY(float y) +{ + rotatePivot.y = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotZ(float z) +{ + rotatePivot.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateAxis(float x, float y, float z) +{ + rotateAxisX = x; + rotateAxisY = y; + rotateAxisZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateAxisX(float rax) +{ + rotateAxisX = rax; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateAxisY(float ray) +{ + rotateAxisY = ray; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateAxisZ(float raz) +{ + rotateAxisZ = raz; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotate(float x, float y, float z) +{ + rotateX = x; + rotateY = y; + rotateZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateX(float x) +{ + rotateX = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateY(float y) +{ + rotateY = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateZ(float z) +{ + rotateZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotateOrder(RotateOrder ro) +{ + rotateOrder = ro; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotTranslate(float x, float y, float z) +{ + rotatePivotTranslate.x = x; + rotatePivotTranslate.y = y; + rotatePivotTranslate.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotTranslate(const tlPoint& rpt) +{ + rotatePivotTranslate = rpt; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotTranslateX(float x) +{ + rotatePivotTranslate.x = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotTranslateY(float y) +{ + rotatePivotTranslate.y = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetRotatePivotTranslateZ(float z) +{ + rotatePivotTranslate.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetJointOrient(float x, float y, float z) +{ + jointOrientX = x; + jointOrientY = y; + jointOrientZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetJointOrientX(float x) +{ + jointOrientX = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetJointOrientY(float y) +{ + jointOrientY = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetJointOrientZ(float z) +{ + jointOrientZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetInverseScale(float x, float y, float z) +{ + inverseScaleX = x; + inverseScaleY = y; + inverseScaleZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetInverseScaleX(float x) +{ + inverseScaleX = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetInverseScaleY(float y) +{ + inverseScaleY = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetInverseScaleZ(float z) +{ + inverseScaleZ = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetTranslate(float x, float y, float z) +{ + translate.x = x; + translate.y = y; + translate.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetTranslate(const tlPoint& t) +{ + translate = t; + hierarchyDirty = true; +} + + +void TransformMatrix::SetTranslateX(float x) +{ + translate.x = x; + hierarchyDirty = true; +} + + +void TransformMatrix::SetTranslateY(float y) +{ + translate.y = y; + hierarchyDirty = true; +} + + +void TransformMatrix::SetTranslateZ(float z) +{ + translate.z = z; + hierarchyDirty = true; +} + + +void TransformMatrix::SetScaleMatrixIdentity() +{ + scalePivot.x = 0.0f; + scalePivot.y = 0.0f; + scalePivot.z = 0.0f; + + scaleX = 1.0f; + scaleY = 1.0f; + scaleZ = 1.0f; + + shearXY = 0.0f; + shearXZ = 0.0f; + shearYZ = 0.0f; + + scalePivotTranslate.x = 0.0f; + scalePivotTranslate.y = 0.0f; + scalePivotTranslate.z = 0.0f; + + scaleMatrix.IdentityMatrix(); + scaleDirty = false; +} + + +void TransformMatrix::SetHierarchyMatrixIdentity() +{ + rotatePivot.x = 0.0f; + rotatePivot.y = 0.0f; + rotatePivot.z = 0.0f; + + rotateAxisX = 0.0f; + rotateAxisY = 0.0f; + rotateAxisZ = 0.0f; + + rotateX = 0.0f; + rotateY = 0.0f; + rotateZ = 0.0f; + + rotatePivotTranslate.x = 0.0f; + rotatePivotTranslate.y = 0.0f; + rotatePivotTranslate.z = 0.0f; + + jointOrientX = 0.0f; + jointOrientY = 0.0f; + jointOrientZ = 0.0f; + + inverseScaleX = 1.0f; + inverseScaleY = 1.0f; + inverseScaleZ = 1.0f; + + translate.x = 0.0f; + translate.y = 0.0f; + translate.z = 0.0f; + + hierarchyMatrix.IdentityMatrix(); + hierarchyDirty = false; +} + + +void TransformMatrix::SetIdentity() +{ + SetScaleMatrixIdentity(); + SetHierarchyMatrixIdentity(); +} + + +void TransformMatrix::ComputeScaleMatrix() +{ + if (!scaleDirty) + return; + + scaleMatrix.IdentityMatrix(); + scaleMatrix.Translate(-scalePivot); + scaleMatrix.Scale(scaleX, scaleY, scaleZ, true); + scaleMatrix.Shear(shearXY, shearXZ, shearYZ); + scaleMatrix.Translate(scalePivot); + scaleMatrix.Translate(scalePivotTranslate); + + scaleMatrix.Scale(inverseScaleX, inverseScaleY, inverseScaleZ, true); + + scaleDirty = false; +} + + +void TransformMatrix::ComputeHierarchyMatrix() +{ + if (!hierarchyDirty) + return; + + hierarchyMatrix.IdentityMatrix(); + hierarchyMatrix.Translate(-rotatePivot); + + hierarchyMatrix.RotateX(rotateAxisX); + hierarchyMatrix.RotateY(rotateAxisY); + hierarchyMatrix.RotateZ(rotateAxisZ); + + switch (rotateOrder) + { + case ORDER_XYZ: + hierarchyMatrix.RotateX(rotateX); + hierarchyMatrix.RotateY(rotateY); + hierarchyMatrix.RotateZ(rotateZ); + break; + + case ORDER_YZX: + hierarchyMatrix.RotateY(rotateY); + hierarchyMatrix.RotateZ(rotateZ); + hierarchyMatrix.RotateX(rotateX); + break; + + case ORDER_ZXY: + hierarchyMatrix.RotateZ(rotateZ); + hierarchyMatrix.RotateX(rotateX); + hierarchyMatrix.RotateY(rotateY); + break; + + case ORDER_XZY: + hierarchyMatrix.RotateX(rotateX); + hierarchyMatrix.RotateZ(rotateZ); + hierarchyMatrix.RotateY(rotateY); + break; + + case ORDER_YXZ: + hierarchyMatrix.RotateY(rotateY); + hierarchyMatrix.RotateX(rotateX); + hierarchyMatrix.RotateZ(rotateZ); + break; + + case ORDER_ZYX: + hierarchyMatrix.RotateZ(rotateZ); + hierarchyMatrix.RotateY(rotateY); + hierarchyMatrix.RotateX(rotateX); + break; + } + + hierarchyMatrix.Translate(rotatePivot); + hierarchyMatrix.Translate(rotatePivotTranslate); + hierarchyMatrix.RotateX(jointOrientX); + hierarchyMatrix.RotateY(jointOrientY); + hierarchyMatrix.RotateZ(jointOrientZ); + //hierarchyMatrix.Scale(inverseScaleX, inverseScaleY, inverseScaleZ, true); + hierarchyMatrix.Translate(translate); + + hierarchyDirty = false; +} + + +const tlMatrix& TransformMatrix::GetScaleMatrix() const +{ + const_cast<TransformMatrix*>(this)->ComputeScaleMatrix(); + return scaleMatrix; +} + + +const tlMatrix& TransformMatrix::GetHierarchyMatrix() const +{ + const_cast<TransformMatrix*>(this)->ComputeHierarchyMatrix(); + return hierarchyMatrix; +} + + +void TransformMatrix::GetScaleMatrixLHS(tlMatrix& matrix) const +{ + GetScaleMatrixRHS(matrix); + matrix.RHSToLHS(); +} + + +void TransformMatrix::GetHierarchyMatrixLHS(tlMatrix& matrix) const +{ + GetHierarchyMatrixRHS(matrix); + matrix.RHSToLHS(); +} + + +void TransformMatrix::GetScaleMatrixRHS(tlMatrix& matrix) const +{ + const_cast<TransformMatrix*>(this)->ComputeScaleMatrix(); + matrix = scaleMatrix; +} + + +void TransformMatrix::GetHierarchyMatrixRHS(tlMatrix& matrix) const +{ + const_cast<TransformMatrix*>(this)->ComputeHierarchyMatrix(); + matrix = hierarchyMatrix; +} + + +// End of file. + diff --git a/tools/globalcode/utility/transformmatrix.h b/tools/globalcode/utility/transformmatrix.h new file mode 100644 index 0000000..4d0e175 --- /dev/null +++ b/tools/globalcode/utility/transformmatrix.h @@ -0,0 +1,247 @@ +#include "precompiled/PCH.h" + +/*=========================================================================== + transformmatrix.hpp + Created: October 16, 2000 + Auuthor: Bryan Brandt + + Copyright (c) 2000 Radical Entertainment, Inc. + All rights reserved. +===========================================================================*/ +#ifndef _TRANSFORMMATRIX_HPP +#define _TRANSFORMMATRIX_HPP + +#ifdef WORLD_BUILDER +#include "main/toolhack.h" +#endif +#include <toollib.hpp> + + +class MObject; +class MDagPath; +class MFnTransform; +class MFnIkJoint; +class MTransformationMatrix; + + +class TransformMatrix +{ +public: + + enum RotateOrder + { + ORDER_XYZ = 0, + ORDER_YZX, + ORDER_ZXY, + ORDER_XZY, + ORDER_YXZ, + ORDER_ZYX + }; + + TransformMatrix(); + TransformMatrix(const MDagPath& dagPath); + TransformMatrix(const MTransformationMatrix& xform); + + bool Assign(const MDagPath& dagPath); + bool Assign(const MTransformationMatrix& xform); + + void SetScalePivot(float x, float y, float z); + void SetScalePivot(const tlPoint& sp); + void SetScalePivotX(float x); + void SetScalePivotY(float y); + void SetScalePivotZ(float z); + const tlPoint& GetScalePivot() const + { return scalePivot; } + float GetScalePivotX() const + { return scalePivot.x; } + float GetScalePivotY() const + { return scalePivot.y; } + float GetScalePivotZ() const + { return scalePivot.z; } + + void SetScale(float x, float y, float z); + void SetScaleX(float x); + void SetScaleY(float y); + void SetScaleZ(float z); + float GetScaleX() const + { return scaleX; } + float GetScaleY() const + { return scaleY; } + float GetScaleZ() const + { return scaleZ; } + + void SetShear(float xy, float xz, float yz); + void SetShearXY(float xy); + void SetShearXZ(float xz); + void SetShearYZ(float yz); + float GetShearXY() const + { return shearXY; } + float GetShearXZ() const + { return shearXZ; } + float GetShearYZ() const + { return shearYZ; } + + void SetScalePivotTranslate(float x, float y, float z); + void SetScalePivotTranslate(const tlPoint& spt); + void SetScalePivotTranslateX(float x); + void SetScalePivotTranslateY(float y); + void SetScalePivotTranslateZ(float z); + const tlPoint& GetScalePivotTranslate() const + { return scalePivotTranslate; } + float GetScalePivotTranslateX() const + { return scalePivotTranslate.x; } + float GetScalePivotTranslateY() const + { return scalePivotTranslate.y; } + float GetScalePivotTranslateZ() const + { return scalePivotTranslate.z; } + + void SetRotatePivot(float x, float y, float z); + void SetRotatePivot(const tlPoint& rp); + void SetRotatePivotX(float x); + void SetRotatePivotY(float y); + void SetRotatePivotZ(float z); + const tlPoint& GetRotatePivot() const + { return rotatePivot; } + float GetRotatePivotX() const + { return rotatePivot.x; } + float GetRotatePivotY() const + { return rotatePivot.y; } + float GetRotatePivotZ() const + { return rotatePivot.z; } + + void SetRotateAxis(float x, float y, float z); + void SetRotateAxisX(float rax); + void SetRotateAxisY(float ray); + void SetRotateAxisZ(float raz); + float GetRotateAxisX() const + { return rotateAxisX; } + float GetRotateAxisY() const + { return rotateAxisY; } + float GetRotateAxisZ() const + { return rotateAxisZ; } + + void SetRotateOrder(RotateOrder ro); + RotateOrder GetRotateOrder() const + { return rotateOrder; } + + void SetRotate(float x, float y, float z); + void SetRotateX(float x); + void SetRotateY(float y); + void SetRotateZ(float z); + float GetRotateX() const + { return rotateX; } + float GetRotateY() const + { return rotateY; } + float GetRotateZ() const + { return rotateZ; } + + void SetRotatePivotTranslate(float x, float y, float z); + void SetRotatePivotTranslate(const tlPoint& rpt); + void SetRotatePivotTranslateX(float x); + void SetRotatePivotTranslateY(float y); + void SetRotatePivotTranslateZ(float z); + const tlPoint& GetRotatePivotTranslate() const + { return rotatePivotTranslate; } + float GetRotatePivotTranslateX() const + { return rotatePivotTranslate.x; } + float GetRotatePivotTranslateY() const + { return rotatePivotTranslate.y; } + float GetRotatePivotTranslateZ() const + { return rotatePivotTranslate.z; } + + void SetJointOrient(float x, float y, float z); + void SetJointOrientX(float x); + void SetJointOrientY(float y); + void SetJointOrientZ(float z); + float GetJointOrientX() const + { return jointOrientX; } + float GetJointOrientY() const + { return jointOrientY; } + float GetJointOrientZ() const + { return jointOrientZ; } + + void SetInverseScale(float x, float y, float z); + void SetInverseScaleX(float x); + void SetInverseScaleY(float y); + void SetInverseScaleZ(float z); + float GetInverseScaleX() const + { return inverseScaleX; } + float GetInverseScaleY() const + { return inverseScaleY; } + float GetInverseScaleZ() const + { return inverseScaleZ; } + + void SetTranslate(float x, float y, float z); + void SetTranslate(const tlPoint& t); + void SetTranslateX(float x); + void SetTranslateY(float y); + void SetTranslateZ(float z); + const tlPoint& GetTranslate() const + { return translate; } + float GetTranslateX() const + { return translate.x; } + float GetTranslateY() const + { return translate.y; } + float GetTranslateZ() const + { return translate.z; } + + void SetScaleMatrixIdentity(); + void SetHierarchyMatrixIdentity(); + void SetIdentity(); + + // these are the outputs of this class: + // scale matrix - to be baked into the mesh + // hierarchy matrix - stored in the skeleton + const tlMatrix& GetScaleMatrix() const; + const tlMatrix& GetHierarchyMatrix() const; + + // routines for extracting the above matrices, + // except with an option to change coordinate systems + // + void GetScaleMatrixLHS(tlMatrix& matrix) const; + void GetHierarchyMatrixLHS(tlMatrix& matrix) const; + void GetScaleMatrixRHS(tlMatrix& matrix) const; + void GetHierarchyMatrixRHS(tlMatrix& matrix) const; + +private: + + bool AssignJoint(MDagPath& dagPath, MObject& jointNode); + + void ComputeScaleMatrix(); + void ComputeHierarchyMatrix(); + + tlPoint scalePivot; + float scaleX; + float scaleY; + float scaleZ; + float shearXY; + float shearXZ; + float shearYZ; + tlPoint scalePivotTranslate; + tlPoint rotatePivot; + float rotateAxisX; + float rotateAxisY; + float rotateAxisZ; + RotateOrder rotateOrder; + float rotateX; + float rotateY; + float rotateZ; + tlPoint rotatePivotTranslate; + float jointOrientX; + float jointOrientY; + float jointOrientZ; + float inverseScaleX; + float inverseScaleY; + float inverseScaleZ; + tlPoint translate; + + bool scaleDirty; + bool hierarchyDirty; + + tlMatrix scaleMatrix; + tlMatrix hierarchyMatrix; +}; + + +#endif // _TRANSFORMMATRIX_HPP + diff --git a/tools/globalcode/utility/util.c b/tools/globalcode/utility/util.c new file mode 100644 index 0000000..79764df --- /dev/null +++ b/tools/globalcode/utility/util.c @@ -0,0 +1,724 @@ +/*----------------------------------------------------------------------------- +** Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +** +** winutil.h +** +** Description: A set of utilities which are specific to the windows development +** environment. +** +** Modification History: +** + Created Aug 03, 2001 -- bkusy +**---------------------------------------------------------------------------*/ + +/*---------------------------------------- +** System Includes +**--------------------------------------*/ +#include <string.h> +#include <stdio.h> +#include <assert.h> + +/*---------------------------------------- +** Project Includes +**--------------------------------------*/ +#include "util.h" + +/*---------------------------------------- +** Constants +**--------------------------------------*/ +#define BUFFER_SIZE 512 + +/*---------------------------------------- +** Globals +**--------------------------------------*/ +char* util_optarg; +int util_optind; +int util_opterr = 1; +int util_optopt; + + +/*----------------------------------------------------------------------------- +** u t i l _ b a s e n a m e +** +** Synopsis: Determine the basename in a file path. ( eg/ would return +** "newfile.c" from the path "/usr/home/newfile.c". +** +** Parameters: buffer - buffer to receive basename. +** size - size of buffer. +** path - path to determine basename from. +** +** Returns: non-zero if successful, 0 if buffer is too small. +** +** Constraints: path must use '/' and not '\' as directory separators. +** +**---------------------------------------------------------------------------*/ +int util_basename( char* buffer, int size, const char* path ) +{ + char* d; + char* n; + char* e; + int length; + int result = 0; + + assert( buffer ); + + util_decomposeFilePath( path, &d, &n, &e ); + + length = strlen( n ) + strlen( e ) + 1; + + if ( length < size ) + { + strcpy( buffer, n ); + strcat( buffer, "." ); + strcat( buffer, e ); + + result = 1; + } + + return result; +} +/*----------------------------------------------------------------------------- +** u t i l _ c h a n g e F i l e E x t e n s i o n +** +** Synopsis: Changes the file extension in the given buffer to the given +** given extension. +** +** Parameters: buffer - the file path to be modified. +** ext - the new file extension. +** +** Returns: NOTHING +** +** Constraints: If the original file path does not have an extension, as +** identified by the presence of a "." character, no change will +** take place. +** If the new extension is longer than the old extension, no +** change will take place. +** +**---------------------------------------------------------------------------*/ +void util_changeFileExtension( char* buffer, const char* ext ) +{ + char* oldExt = 0; + + assert( buffer ); + assert( ext ); + + oldExt = (char*)(util_rindex( buffer, '.' )); + + if ( oldExt ) + { + oldExt++; + + if ( strlen( oldExt ) <= strlen( ext ) ) + { + strcpy( oldExt, ext ); + } + } +} + +/*----------------------------------------------------------------------------- +** u t i l _ d e c o m p o s e F i l e P a t h +** +** Synopsis: Decompose a file path into its directory, filename and extension. +** +** Parameters: path - the path to decompose. +** dir - a pointer which will be set to the start of the directory. +** name - a pointer which will be set to the start of the name. +** ext - a pointer which will be set to the start of the extension. +** +** Returns: NOTHING +** +** Constraints: path must use '/' and not '\' as directory separators. The pointers +** returned in dir, name, and ext are only valid until the next call +** to util_DecomposePath(). +** +**---------------------------------------------------------------------------*/ +void util_decomposeFilePath( const char* path, char** dir, char** name, char** ext ) +{ + static char buffer[ BUFFER_SIZE + 1 ]; + strncpy( buffer, path, BUFFER_SIZE ); + + *ext = strrchr( buffer, '.' ); + if ( *ext ) + { + /* + * Remove the extension by replacing '.' with a NULL character. + */ + **ext = '\0'; + + /* + * The extension will be in the next position. + */ + (*ext)++; + } + + *name = strrchr( buffer, '/' ); + if ( *name ) + { + /* + * Remove the name by replacing the last '/' with a NULL character. + */ + **name = '\0'; + + /* + * The name will be in the next position. + */ + (*name)++; + + /* + * Set dir to the start of the string and we are done. + */ + *dir = buffer; + } + else + { + /* + * Name must extend to the beginning of the path. Set the name pointer + * accordingly and set dir to null. + */ + *name = buffer; + *dir = 0; + } +} + +/*----------------------------------------------------------------------------- +** u t i l _ d i r n a m e +** +** Synopsis: Determine the directory in a file path. +** +** Parameters: buffer - buffer to recieve directory. +** size - size of buffer. +** path - the path to retrieve the directory from. +** +** Returns: non-zero if successful, zero if buffer is too small to receive +** the directory. +** +** Constraints: path must use '/' and not '\' as directory separators. +** +**---------------------------------------------------------------------------*/ +int util_dirname( char* buffer, int size, const char* path ) +{ + char* d; + char* n; + char* e; + int length; + int result = 0; + + util_decomposeFilePath( path, &d, &n, &e ); + + length = strlen( d ); + if ( length < size ) + { + strcpy( buffer, d ); + result = 1; + } + + return result; +} + +/*----------------------------------------------------------------------------- +** u t i l _ f i l e E x i s t s +** +** Synopsis: Determines if the give file exists. +** +** Parameters: filename - the name of the file to check for existence. +** +** Returns: 0 if file does not exist, non-zero otherwise. +** +** Constraints: +** +**---------------------------------------------------------------------------*/ +int util_fileExists( const char* filename ) +{ + FILE *fp; + + assert( filename ); + + fp = fopen( filename, "r" ); + + if ( fp ) + { + fclose( fp ); + return 1; + } + + return 0; +} + +/*----------------------------------------------------------------------------- +** u t i l _ g e t o p t _ i n i t +** +** Synopsis: Initializes the getopt parser. +** +** Parameters: NONE +** +** Returns: NOTHING +** +** Constraints: NONE +** +** Author: Angus Mackay +** +**---------------------------------------------------------------------------*/ +void util_getopt_init() +{ + util_optind = 1; +} + +/*----------------------------------------------------------------------------- +** u t i l _ g e t o p t +** +** Synopsis: Used to parse command line arguments based on a specified +** syntax. The argument for the current option is stored in +** the global variable "util_optarg". +** +** Parameters: argc - the number of arguments in the array. +** argv - the argumnet array. +** opts - option specifier string. Options can be of two forms: +** boolean flags ( its either there or it isn't ) and +** flag value pairs in which a flag is always followed +** by some value. Options which require an argument +** must be followed by a ":" in the option specifier +** string. So for a command which can have two boolean +** flags, "h" and "i", and two argument flags, "t" and +** "u", the following option specifier string would be +** used: "hit:u:". +** +** Returns: the option character found, or -1 if no more option +** characters. +** +** Constraints: NONE +** +** Author: Angus Mackay +** +**---------------------------------------------------------------------------*/ +int util_getopt( int argc, char* const* argv, const char* opts ) +{ + static int init_done = 0; + static int suboptionpos = 1; + + if(!init_done) { util_getopt_init(); init_done = 1; } + + util_optarg = NULL; + + if(util_optind == argc) + { + /* we are done */ + return(-1); + } + + if(argv[util_optind][0] == '-') + { + char *argp; + + /* test for end of arg marker */ + if(argv[util_optind][1] == '-' && argv[util_optind][2] == '\0') + { + suboptionpos = 1; + util_optind++; + return(-1); + } + + for(argp=&(argv[util_optind][suboptionpos]); *argp != '\0'; argp++) + { + char *optp; + int numcolon = 0; + char *p; + + if((optp=strchr(opts, *argp)) == NULL) + { + if(util_opterr != 0) + { + fprintf(stderr, "%s: illegal option -- %c\n", argv[0], *argp); + } + util_optopt = *argp; + suboptionpos++; + if(argv[util_optind][suboptionpos] == '\0') + { + suboptionpos = 1; + util_optind++; + } + return('?'); + } + + /* zero, one or two colons? */ + for(p=(optp+1); *p == ':'; p++) { numcolon++; } + switch(numcolon) + { + /* no argument */ + case 0: + suboptionpos++; + if(argv[util_optind][suboptionpos] == '\0') + { + suboptionpos = 1; + util_optind++; + } + return(*optp); + break; + + /* manditory argument */ + case 1: + /* the argument is seperated by a space */ + if(argp[1] == '\0') + { + /* ther are more args */ + if(util_optind+1 == argc) + { + suboptionpos++; + if(argv[util_optind][suboptionpos] == '\0') + { + suboptionpos = 1; + util_optind++; + } + if(util_opterr != 0) + { + fprintf(stderr, "%s: option requires an argument -- %c\n", + argv[0], *argp); + } + util_optopt = *argp; + return('?'); + } + + util_optind++; + suboptionpos = 1; + util_optarg = argv[util_optind]; + util_optind++; + return(*optp); + } + + /* the argument is attached */ + util_optarg = argp+1; + suboptionpos = 1; + util_optind++; + return(*optp); + break; + + /* optional argument */ + case 2: + /* the argument is seperated by a space */ + if(argp[1] == '\0') + { + util_optind++; + suboptionpos = 1; + util_optarg = NULL; + return(*optp); + } + + /* the argument is attached */ + suboptionpos = 1; + util_optarg = argp+1; + util_optind++; + return(*optp); + break; + + /* a case of too many colons */ + default: + suboptionpos++; + if(argv[util_optind][suboptionpos] == '\0') + { + suboptionpos = 1; + util_optind++; + } + util_optopt = '?'; + return('?'); + break; + } + } + suboptionpos = 1; + } + else + { + /* we are done */ + return(-1); + } + + /* we shouldn't get here */ + return(-1); +} + +/*----------------------------------------------------------------------------- +** u t i l _ i n d e x +** +** Synopsis: returns a pointer to the first occurrence of the character +** "c" in the string "s". +** +** Parameters: s - the string to search. +** c - the character to search for. +** +** Returns: a pointer to the matched character, or NULL if the character +** is not found. +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +const char* util_index( const char* s, int c ) +{ + const char* result = 0; + const char* sp = 0; + + assert( s ); + + sp = s; + + while ( *sp != '\0' ) + { + if ( *sp == c ) + { + result = sp; + break; + } + + sp++; + } + + return result; +} + +/*----------------------------------------------------------------------------- +** u t i l _ p o s i x F i l e P a t h +** +** Synopsis: Ensures the given path uses POSIX style slashes. +** +** Parameters: path - the path to "posixfy". +** +** Returns: NOTHING +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +void util_posixFilePath( char* path ) +{ + char* pp = path; + while ( *pp ) + { + if ( '\\' == *pp ) *pp = '/'; + pp++; + } +} + +/*----------------------------------------------------------------------------- +** u t i l _ r e p l a c e C h a r a c t e r s +** +** Synopsis: Replace characters in a string. +** +** Parameters: find - the character to find. +** replace - the charcter to replace the found character with. +** string - the string within which to do the find/replace. +** +** Returns: NOTHING +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +void util_replaceCharacters( char find, char replace, char* string ) +{ + char* p = 0; + + if ( string ) + { + while ( p = strchr( string, find ) ) + { + *p = replace; + } + } +} + +/*----------------------------------------------------------------------------- +** u t i l _ r e v e r s e S p a n +** +** Synopsis: Finds the suffix which is composed completely of characters in +** in the spanSet in the specified string. +** +** Example: end = util_ReverseSpan( "name123", "312" ); +** * +** * end now points to "123". +** * +** end = util_ReverseSpan( "name123", "21" ); +** * +** * end would point to NULL because the character "3" is not +** * in the spanSet. +** +** Parameters: string - the string to be searched. +** spanSet - a string of characters that can be in the suffix. +** +** Returns: a pointer to the suffix string, or NULL if there is no +** suffix. +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +const char* util_reverseSpan( const char* string, const char* spanSet ) +{ + const char* sp = 0; + const char* next_sp = 0; + int isEndSpan = 0; + + /* + * Set a pointer to the end of the string to be searched. + */ + sp = string + strlen( string ); + + /* + * If the string passed in is empty, we are done. + */ + if ( sp == string ) return sp; + + while( sp > string && !isEndSpan ) + { + next_sp = sp - 1; + + if ( strchr( spanSet, *next_sp ) ) + { + sp--; + } + else + { + isEndSpan = 1; + } + } + + return sp; +} + +/*----------------------------------------------------------------------------- +** u t i l _ r i n d e x +** +** Synopsis: returns a pointer to the last occurrence of the character +** "c" in the string "s". +** +** Parameters: s - the string to search. +** c - the character to search for. +** +** Returns: a pointer to the matched character, or NULL if the character +** is not found. +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +const char* util_rindex( const char* s, int c ) +{ + const char* result = 0; + const char* sp = 0; + int length; + + assert( s ); + + length = strlen(s); + sp = s + length; + + if ( length > 0 ) + { + while ( sp != s ) + { + sp--; + + if ( *sp == c ) + { + result = sp; + break; + } + } + } + + return result; +} + +/*----------------------------------------------------------------------------- +** u t i l _ s u b s t i t u t e +** +** Synopsis: Substitue strings matchin "find" with "replace" in "string". +** If this cannot be done without exceeding the size of "string" +** An error will be returned and "string" will be as it was +** when util_substitute was originally called. +** +** Parameters: find - the substring to find. +** replace - the substring to insert in place of found strings. +** string - the string to operate on. +** stringSize - the maximum size the string can grow to. +** firstOnly - flag. If non-zero only the first occurence of +** "find" will be replaced. If zero, all occurences +** will be replaced. +** +** Returns: 0 on error, the new size of the string on success. +** +** Constraints: NONE +** +**---------------------------------------------------------------------------*/ +int util_substitute( const char* find, + const char* replace, + char* string, + int stringSize, + int firstOnly + ) +{ + char buffer[ BUFFER_SIZE + 1 ]; + char* sp; + char* bp; + char* p; + int findLength = strlen( find ); + int replaceLength = strlen( replace ); + int count = 0; + int total = 0; + int tooBig = 0; + int status = 0; + + assert( stringSize <= BUFFER_SIZE ); + + bp = buffer; + sp = string; + while( !tooBig && (p = strstr( sp, find )) ) + { + /* + * Determine the number of characters since last find. + * Add to total characters. + * If total characters exceeds "stringSize" then break and return + * error. Otherwise copy characters since last find to buffer. + */ + count = p - sp; + total += count; + if ( total >= stringSize ) + { + tooBig = 1; + continue; + } + strncpy( bp, sp, count ); + bp += count; + *bp = '\0'; + + /* + * If adding the replace string causes buffer to exceed "stringSize" + * break and return error. Otherwise copy the replace string into + * buffer. + */ + total += replaceLength; + if ( total >= stringSize ) + { + tooBig = 1; + continue; + } + strcpy( bp, replace ); + bp += replaceLength; + + /* + * Update the position of sp so that it points to next character + * after the last found "find" string. + */ + sp += count + findLength; + } + + if ( !tooBig ) + { + /* + * Attempt to copy the remaining portion of string into buffer. + * If successful, copy buffer into string and return success. + * Otherwise return error. + */ + total += strlen( sp ); + if ( total < stringSize ) + { + strcpy( bp, sp ); + strcpy( string, buffer ); + status = strlen( string ); + } + } + + return status; +} + diff --git a/tools/globalcode/utility/util.h b/tools/globalcode/utility/util.h new file mode 100644 index 0000000..33a6d84 --- /dev/null +++ b/tools/globalcode/utility/util.h @@ -0,0 +1,88 @@ +#ifndef _UTIL_H +#define _UTIL_H +/*----------------------------------------------------------------------------- +** Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +** +** util.h +** +** Description: A set of utilities for various things. +** +** Modification History: +** + Created Aug 03, 2001 -- bkusy +**---------------------------------------------------------------------------*/ + +/*---------------------------------------- +** System Includes +**--------------------------------------*/ + +/*---------------------------------------- +** Project Includes +**--------------------------------------*/ + +/*---------------------------------------- +** Forward References +**--------------------------------------*/ + +#ifdef __cplusplus +extern "C" { +#endif + +/*---------------------------------------- +** Globals +**--------------------------------------*/ +extern char* util_optarg; +extern int util_optind; +extern int util_opterr; +extern int util_optopt; + +/*---------------------------------------- +** Macros +**--------------------------------------*/ + + +/*---------------------------------------- +** Functions +**--------------------------------------*/ + +extern int util_basename( char* buffer, int size, const char* path ); + +extern void util_changeFileExtension( char* buffer, const char* ext ); + +extern void util_decomposeFilePath( const char* path, + char** dir, + char** name, + char** ext + ); + +extern int util_dirname( char* buffer, int size, const char* path ); + +extern int util_fileExists( const char* filename ); + +extern void util_getopt_init(); + +extern int util_getopt( int argc, char* const* argv, const char *opts ); + +extern const char* util_index( const char* s, int c ); + +extern void util_posixFilePath( char* path ); + +extern void util_replaceCharacters( char find, + char replace, + char* string + ); + +extern const char* util_reverseSpan( const char* string, const char* spanSet ); + +extern const char* util_rindex( const char* s, int c ); + +extern int util_substitute( const char* find, + const char* replace, + char* string, + int stringSize, + int firstOnly + ); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/globalcode/utility/winutil.c b/tools/globalcode/utility/winutil.c new file mode 100644 index 0000000..9493c8b --- /dev/null +++ b/tools/globalcode/utility/winutil.c @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// winutil.h +// +// Description: A set of utilities which are specific to the windows development +// environment. +// +// Modification History: +// + Created Aug 03, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <windows.h> +#include <stdio.h> +#include <assert.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "winutil.h" + +//---------------------------------------- +// Constants +//---------------------------------------- +#define BUFFER_SIZE 256 + + +//----------------------------------------------------------------------------- +// w i n u t i l _ V e r s i o n I n f o +// +// Synopsis: Retrieve a version info string for the specified module. +// +// Parameters: name - the module to retrieve the information for. +// info - a reference parameter to receive the info string. +// info_size - the size of the buffer pointed to by info. +// +// Returns: the length of the string returned in info. +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +int winutil_VersionInfo( const char* name, char* info, int info_size ) +{ + char buffer[ BUFFER_SIZE + 1 ]; + char* data = 0; + DWORD data_length, unused; + VS_FIXEDFILEINFO* fixed_file_info; + UINT fixed_file_info_length; + int major, minor; + int result; + + GetModuleFileName( GetModuleHandle( name ), buffer, BUFFER_SIZE ); + data_length = GetFileVersionInfoSize( buffer, &unused ); + data = calloc( data_length, sizeof( char ) ); + assert( data ); + GetFileVersionInfo( buffer, unused, data_length, data ); + VerQueryValue( data, "\\", (void**)(&fixed_file_info), &fixed_file_info_length ); + + major = fixed_file_info->dwFileVersionMS >> 16; + minor = fixed_file_info->dwFileVersionMS & 0x0ffff; + result = _snprintf( info, info_size, "%d.%d", major, minor ); + return result; +} + + + diff --git a/tools/globalcode/utility/winutil.h b/tools/globalcode/utility/winutil.h new file mode 100644 index 0000000..bfe19ec --- /dev/null +++ b/tools/globalcode/utility/winutil.h @@ -0,0 +1,37 @@ +#ifndef _WINUTIL_H +#define _WINUTIL_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// winutil.h +// +// Description: A set of utilities which are specific to the windows development +// environment. +// +// Modification History: +// + Created Aug 03, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- + +#ifdef __cplusplus +extern "C" { +#endif + +int winutil_VersionInfo( const char* name, char* info, int info_size ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/objectsnapper/build/Debug/objectsnapper.log b/tools/objectsnapper/build/Debug/objectsnapper.log new file mode 100644 index 0000000..d96726d --- /dev/null +++ b/tools/objectsnapper/build/Debug/objectsnapper.log @@ -0,0 +1,8 @@ +Build started 11/7/2015 5:44:23 PM. + 1>Project "G:\Code\Simpsons Hit&Run\tools\objectsnapper\build\objectsnapper.vcxproj" on node 6 (Build target(s)). + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(369,5): error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. + 1>Done Building Project "G:\Code\Simpsons Hit&Run\tools\objectsnapper\build\objectsnapper.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.66 diff --git a/tools/objectsnapper/build/objectsnapper.dsp b/tools/objectsnapper/build/objectsnapper.dsp new file mode 100644 index 0000000..8506a0f --- /dev/null +++ b/tools/objectsnapper/build/objectsnapper.dsp @@ -0,0 +1,295 @@ +# Microsoft Developer Studio Project File - Name="objectsnapper" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=objectsnapper - Win32 Tools Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "objectsnapper.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "objectsnapper.mak" CFG="objectsnapper - Win32 Tools Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "objectsnapper - Win32 Tools Release" (based on "Win32 (x86) Application") +!MESSAGE "objectsnapper - Win32 Tools Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "objectsnapper" +# PROP Scc_LocalPath "." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "objectsnapper - Win32 Tools Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "objectsnapper___Win32_Tools_Release" +# PROP BASE Intermediate_Dir "objectsnapper___Win32_Tools_Release" +# PROP BASE Ignore_Export_Lib 1 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\code\\" /I "C:\AW\Maya4.0\include" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /D "_WIN32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /D "_WIN32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_RELEASE" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release\objectsnapper.mll" /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release\objectsnapper.mll" /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy trackeditor.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Release\objectsnapper.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\objectsnapper.mll copy .\Release\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapper.mll +# End Special Build Tool + +!ELSEIF "$(CFG)" == "objectsnapper - Win32 Tools Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "objectsnapper___Win32_Tools_Debug" +# PROP BASE Intermediate_Dir "objectsnapper___Win32_Tools_Debug" +# PROP BASE Ignore_Export_Lib 1 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\code\\" /I "C:\AW\Maya4.0\include" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /FR /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /FR /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\objectsnapper.mll" /pdbtype:sept /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\objectsnapper.mll" /pdbtype:sept /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy trackeditor.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Debug\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapperd.mll +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "objectsnapper - Win32 Tools Release" +# Name "objectsnapper - Win32 Tools Debug" +# Begin Group "main" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\main\mayaincludes.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.cpp +# ADD CPP /YX"precompiled\PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\stdafx.h +# End Source File +# End Group +# Begin Group "mel scripts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\scripts\os_cleanup.mel + +!IF "$(CFG)" == "objectsnapper - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\os_cleanup.mel +InputName=os_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "objectsnapper - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\os_cleanup.mel +InputName=os_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\os_main.mel + +!IF "$(CFG)" == "objectsnapper - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\os_main.mel +InputName=os_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "objectsnapper - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\os_main.mel +InputName=os_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "commands" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\commands\snapselected.cpp +# ADD CPP /YX"precompiled\PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\code\commands\snapselected.h +# End Source File +# End Group +# Begin Group "utility" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.cpp +# ADD CPP /YX"precompiled\PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.c +# ADD CPP /YX"precompiled\PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\winutil.c +# ADD CPP /YX"precompiled\PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\winutil.h +# End Source File +# End Group +# Begin Group "precompiled header" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\precompiled\PCH.cpp +# ADD CPP /Yc"PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\code\precompiled\PCH.h +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/objectsnapper/build/objectsnapper.vcproj b/tools/objectsnapper/build/objectsnapper.vcproj new file mode 100644 index 0000000..26a8685 --- /dev/null +++ b/tools/objectsnapper/build/objectsnapper.vcproj @@ -0,0 +1,347 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="objectsnapper" + SccProjectName="Perforce Project" + SccAuxPath="" + SccLocalPath="." + SccProvider="MSSCCI:Perforce SCM" + Keyword="MFCProj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Tools Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + InlineFunctionExpansion="1" + OptimizeForWindowsApplication="TRUE" + AdditionalIncludeDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\include\,..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath" + PreprocessorDefinitions="_WIN32;NDEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_RELEASE" + StringPooling="TRUE" + RuntimeLibrary="2" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/objectsnapper.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + IgnoreImportLibrary="TRUE" + AdditionalOptions="/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaUI.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaAnim.lib" + OutputFile="Release\objectsnapper.mll" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + IgnoreDefaultLibraryNames="LIBC.lib;LIBCMT.lib;LIBCPMT.lib" + ProgramDatabaseFile=".\Release/objectsnapper.pdb" + SubSystem="2" + ImportLibrary=".\Release/objectsnapper.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/objectsnapper.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy trackeditor.mll to Distribution and Maya dir." + CommandLine="copy .\Release\objectsnapper.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\objectsnapper.mll +copy .\Release\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapper.mll +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;NDEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Tools Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath,..\..\..\game\libs\pure3d\sdks\Maya4_0\include\" + PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_DEBUG" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/objectsnapper.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + BrowseInformation="1" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + IgnoreImportLibrary="TRUE" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib" + OutputFile="Debug\objectsnapper.mll" + LinkIncremental="2" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/objectsnapper.pdb" + SubSystem="2" + ImportLibrary=".\Debug/objectsnapper.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/objectsnapper.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy trackeditor.mll to Distribution and Maya dir." + CommandLine="copy .\Debug\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapperd.mll"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;_DEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="main" + Filter=""> + <File + RelativePath="..\code\main\mayaincludes.h"> + </File> + <File + RelativePath="..\code\main\pluginMain.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\main\pluginMain.h"> + </File> + <File + RelativePath="..\code\main\stdafx.h"> + </File> + </Filter> + <Filter + Name="mel scripts" + Filter=""> + <File + RelativePath="..\code\scripts\os_cleanup.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\os_main.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="commands" + Filter=""> + <File + RelativePath="..\code\commands\snapselected.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\commands\snapselected.h"> + </File> + </Filter> + <Filter + Name="utility" + Filter=""> + <File + RelativePath="..\..\globalcode\utility\MExt.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\util.c"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\util.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\winutil.c"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\winutil.h"> + </File> + </Filter> + <Filter + Name="precompiled header" + Filter=""> + <File + RelativePath="..\code\precompiled\PCH.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + PrecompiledHeaderThrough="PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + PrecompiledHeaderThrough="PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\precompiled\PCH.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/objectsnapper/build/objectsnapper.vcxproj b/tools/objectsnapper/build/objectsnapper.vcxproj new file mode 100644 index 0000000..f174963 --- /dev/null +++ b/tools/objectsnapper/build/objectsnapper.vcxproj @@ -0,0 +1,228 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Tools Debug|Win32"> + <Configuration>Tools Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Tools Release|Win32"> + <Configuration>Tools Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <SccProjectName> + </SccProjectName> + <SccAuxPath /> + <SccLocalPath> + </SccLocalPath> + <SccProvider> + </SccProvider> + <Keyword>MFCProj</Keyword> + <ProjectGuid>{278283D0-FEC2-4B06-8AED-8DDB745215B4}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <OutDir>.\Release\</OutDir> + <IntDir>.\Release\</IntDir> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <OutDir>.\Debug\</OutDir> + <IntDir>.\Debug\</IntDir> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <ClCompile> + <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> + <AdditionalIncludeDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WIN32;NDEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Release/objectsnapper.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Release/</AssemblerListingLocation> + <ObjectFileName>.\Release/</ObjectFileName> + <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaUI.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaAnim.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Release\objectsnapper.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <IgnoreSpecificDefaultLibraries>LIBC.lib;LIBCMT.lib;LIBCPMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <ProgramDatabaseFile>.\Release/objectsnapper.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <ImportLibrary>.\Release/objectsnapper.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Release/objectsnapper.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy trackeditor.mll to Distribution and Maya dir.</Message> + <Command>copy .\Release\objectsnapper.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\objectsnapper.mll +copy .\Release\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapper.mll +</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Debug/objectsnapper.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Debug/</AssemblerListingLocation> + <ObjectFileName>.\Debug/</ObjectFileName> + <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName> + <BrowseInformation>true</BrowseInformation> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaUI.lib;OpenMayaAnim.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Debug\objectsnapper.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>.\Debug/objectsnapper.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <ImportLibrary>.\Debug/objectsnapper.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Debug/objectsnapper.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy trackeditor.mll to Distribution and Maya dir.</Message> + <Command>copy .\Debug\objectsnapper.mll C:\AW\Maya4.0\bin\plug-ins\objectsnapperd.mll</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\code\main\mayaincludes.h" /> + <ClInclude Include="..\code\main\pluginMain.h" /> + <ClInclude Include="..\code\main\stdafx.h" /> + <ClInclude Include="..\code\commands\snapselected.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h" /> + <ClInclude Include="..\..\globalcode\utility\MUI.h" /> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h" /> + <ClInclude Include="..\..\globalcode\utility\util.h" /> + <ClInclude Include="..\..\globalcode\utility\winutil.h" /> + <ClInclude Include="..\code\precompiled\PCH.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\commands\snapselected.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp" /> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp" /> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp" /> + <ClCompile Include="..\..\globalcode\utility\util.c"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\winutil.c"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">PCH.h</PrecompiledHeaderFile> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Create</PrecompiledHeader> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">PCH.h</PrecompiledHeaderFile> + </ClCompile> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\os_cleanup.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\os_main.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\game\libs\pure3d\toollib\toollib_extras.vcxproj"> + <Project>{cdb92e4a-1e5d-49a8-8153-34264b3fef29}</Project> + <ReferenceOutputAssembly>false</ReferenceOutputAssembly> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/tools/objectsnapper/build/objectsnapper.vcxproj.filters b/tools/objectsnapper/build/objectsnapper.vcxproj.filters new file mode 100644 index 0000000..a5e3f99 --- /dev/null +++ b/tools/objectsnapper/build/objectsnapper.vcxproj.filters @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="main"> + <UniqueIdentifier>{63629421-51a6-4cb5-92ec-c9b7b0171f2c}</UniqueIdentifier> + </Filter> + <Filter Include="mel scripts"> + <UniqueIdentifier>{6b7682fb-ce25-4823-b2de-c37177e8f8ab}</UniqueIdentifier> + </Filter> + <Filter Include="commands"> + <UniqueIdentifier>{a320b2f6-fc00-42dd-8379-fbfa8f7e1c5a}</UniqueIdentifier> + </Filter> + <Filter Include="utility"> + <UniqueIdentifier>{ad0a5a1d-fa73-4b0a-995e-ad7c04385634}</UniqueIdentifier> + </Filter> + <Filter Include="precompiled header"> + <UniqueIdentifier>{ceba181d-db94-4612-8b9c-7698e86ea53e}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\code\main\mayaincludes.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\pluginMain.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\stdafx.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\snapselected.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MUI.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\util.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\winutil.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\code\precompiled\PCH.h"> + <Filter>precompiled header</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp"> + <Filter>main</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\snapselected.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\util.c"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\winutil.c"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <Filter>precompiled header</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\os_cleanup.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\os_main.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/tools/objectsnapper/code/commands/snapselected.cpp b/tools/objectsnapper/code/commands/snapselected.cpp new file mode 100644 index 0000000..e6ab048 --- /dev/null +++ b/tools/objectsnapper/code/commands/snapselected.cpp @@ -0,0 +1,435 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: +// +// Description: Implement SnapSelectedCmd +// +// History: 18/03/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +// Foundation Tech + +//======================================== +// Project Includes +//======================================== +#include "snapselected.h" +#include "utility/MUI.h" +#include "utility/mext.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** + +const char* SnapSelectedCmd::stringId = "OS_SnapSelected"; +const double OSScale = 100.0; + +enum SnapType +{ + ALL, + SINGLE, + TREELINE +}; + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// SnapSelectedCmd::SnapSelectedCmd +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SnapSelectedCmd::SnapSelectedCmd() +{ + mObjDagPaths.clear(); + mNewPositions.clear(); + mOldPositions.clear(); +} + +//============================================================================== +// SnapSelectedCmd::~SnapSelectedCmd +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SnapSelectedCmd::~SnapSelectedCmd() +{ +} + +//============================================================================== +// SnapSelectedCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* SnapSelectedCmd::creator() +{ + return new SnapSelectedCmd(); +} + +//============================================================================== +// SnapSelectedCmd::doit +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus SnapSelectedCmd::doIt( const MArgList& args ) +{ + if ( !MUI::ConfirmDialog( "Are you sure you want to snap these objects?\nYou can not UNDO this command." ) == MUI::YES ) + { + //quit. + return MStatus::kSuccess; + } + + assert( args.length() == 2 ); + + double OFFSET = 0; + int snapType = ALL; + + args.get( 0, OFFSET ); + args.get( 1, snapType ); + + OFFSET *= OSScale; + + MSelectionList list; + MGlobal::getActiveSelectionList( list ); + + MItSelectionList i( list ); + + MFnDagNode fnDagNode; + MDagPath dagPath; + MItDag itDag; + MObject obj; + MDagPath objDagPath; + MObject childObj; + + //For all selected objects. + for ( ; !i.isDone(); i.next() ) + { + i.getDagPath( dagPath ); + + itDag.reset( dagPath, MItDag::kBreadthFirst, MFn::kTransform ); + + for ( ; !itDag.isDone() && itDag.depth() < 2; itDag.next() ) + { + obj = itDag.item(); + fnDagNode.setObject( obj ); + + const char* objName = fnDagNode.name().asChar(); + const char* objTypeName = fnDagNode.typeName().asChar(); + + int childCount = fnDagNode.childCount(); + + int whichChild; + + for ( whichChild = 0; whichChild < childCount; ++whichChild ) + { + childObj = fnDagNode.child( whichChild ); + fnDagNode.setObject( childObj ); + + const char* childObjName = fnDagNode.name().asChar(); + const char* childObjTypeName = fnDagNode.typeName().asChar(); + + //Find a mesh below me and move my pivot to the intersection. + itDag.getPath( objDagPath ); + MFnTransform fnTrans( objDagPath ); + + //Get all the child meshes of this obj node to prevent snapping to + //something that is part of me. + + MStringArray meshNames; + + GetChildMeshNames( objDagPath, meshNames ); + + + MVector pos = fnTrans.translation( MSpace::kWorld ); + MPoint rotate = fnTrans.rotatePivot( MSpace::kWorld ); + MVector rayDir( 0, -1.0, 0 ); + + MItDag meshIt( MItDag::kDepthFirst, MFn::kMesh ); + MDagPath meshDagPath; + MPointArray intersectPoints; + + bool found = false; + + for ( ; !meshIt.isDone(); meshIt.next() ) + { + meshIt.getPath( meshDagPath ); + MFnMesh mesh( meshDagPath ); + + const char* meshName = mesh.name().asChar(); + + unsigned int i; + bool nameFound = false; + for ( i = 0; i < meshNames.length(); ++i ) + { + if ( meshNames[i] == mesh.name() ) + { + nameFound = true; + break; + } + } + + if ( nameFound ) + { + continue; + } + + if ( snapType == TREELINE ) + { + + } + else + { + mesh.intersect( rotate, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + if ( intersectPoints.length() > 0 ) + { + MVector diff( intersectPoints[ 0 ] - rotate ); + diff.y += OFFSET; + + //Prepare the command for the redo it ( which does all the work ) + mObjDagPaths.append( fnTrans.dagPath() ); + mNewPositions.append( diff ); + + //Save the old position. + MVector vector = fnTrans.translation( MSpace::kObject ); + mOldPositions.append( vector ); + +// //Move the transform. +// fnTrans.translateBy( diff, MSpace::kWorld ); + + found = true; + + break; + } + } + } + + if ( !found ) + { + //Look up + MPoint rotate = fnTrans.rotatePivot( MSpace::kWorld ); + MVector rayDir( 0, 1.0, 0 ); + + MItDag meshIt( MItDag::kDepthFirst, MFn::kMesh ); + MDagPath meshDagPath; + MPointArray intersectPoints; + + for ( ; !meshIt.isDone(); meshIt.next() ) + { + meshIt.getPath( meshDagPath ); + MFnMesh mesh( meshDagPath ); + + const char* meshName = mesh.name().asChar(); + + unsigned int i; + bool nameFound = false; + for ( i = 0; i < meshNames.length(); ++i ) + { + if ( meshNames[i] == mesh.name() ) + { + nameFound = true; + break; + } + } + + if ( nameFound ) + { + continue; + } + + if ( snapType == TREELINE ) + { + + } + else + { + mesh.intersect( rotate, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + if ( intersectPoints.length() > 0 ) + { + MVector diff( intersectPoints[ 0 ] - rotate ); + diff.y -= OFFSET; + + //Prepare the command for the redo it ( which does all the work ) + mObjDagPaths.append( fnTrans.dagPath() ); + mNewPositions.append( diff ); + + //Save the old position. + MVector vector = fnTrans.translation( MSpace::kObject ); + mOldPositions.append( vector ); + +// //Move the transform. +// fnTrans.translateBy( diff, MSpace::kWorld ); + + found = true; + + break; + } + } + } + } + + if ( !found ) + { + MString errorMsg( "The object: " ); + errorMsg += fnTrans.name(); + errorMsg += MString( " has no mesh below it.\nNo snapping done on it." ); + + MUI::InfoDialog( errorMsg.asChar() ); + } + } + + if ( snapType == SINGLE ) + { + //No more iterations. + break; + } + } + } + + redoIt(); + + return MStatus::kSuccess; +} + +//============================================================================= +// SnapSelectedCmd::undoIt +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus SnapSelectedCmd::undoIt() +{ + unsigned int i; + for ( i = 0; i < mObjDagPaths.length(); ++i ) + { + if ( mObjDagPaths[i].isValid() ) + { + //Move this guy to the new position. + MFnTransform fnTransform( mObjDagPaths[i] ); + + fnTransform.setTranslation( mOldPositions[i], MSpace::kObject ); + } + else + { + MExt::DisplayError( "Error performing snap due to invalid object or change in heirarchy" ); + } + } + + return MStatus::kSuccess; +} + +//============================================================================= +// SnapSelectedCmd::redoIt +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus SnapSelectedCmd::redoIt() +{ + unsigned int i; + for ( i = 0; i < mObjDagPaths.length(); ++i ) + { + if ( mObjDagPaths[i].isValid() ) + { + //Move this guy to the new position. + MFnTransform fnTransform( mObjDagPaths[i] ); + + fnTransform.translateBy( mNewPositions[i], MSpace::kWorld ); + } + else + { + MExt::DisplayError( "Error performing snap due to invalid object or change in heirarchy" ); + } + } + + return MStatus::kSuccess; +} + +//============================================================================= +// SnapSelectedCmd::isUndoable +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool SnapSelectedCmd::isUndoable() const +{ + return true; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** + +//============================================================================== +// SnapSelectedCmd::GetChildMeshNames +//============================================================================== +// Description: Comment +// +// Parameters: ( MDagPath objDagPath, MStringArray& names ) +// +// Return: void +// +//============================================================================== +void SnapSelectedCmd::GetChildMeshNames( MDagPath objDagPath, MStringArray& names ) +{ + names.clear(); + + MItDag itDag; + itDag.reset( objDagPath, MItDag::kDepthFirst, MFn::kMesh ); + + for ( ; !itDag.isDone(); itDag.next() ) + { + MDagPath dagPath; + itDag.getPath( dagPath ); + MFnMesh fnMesh( dagPath ); + + names.append( fnMesh.name() ); + + const char* meshName = fnMesh.name().asChar(); + } + +} diff --git a/tools/objectsnapper/code/commands/snapselected.h b/tools/objectsnapper/code/commands/snapselected.h new file mode 100644 index 0000000..55e0f0d --- /dev/null +++ b/tools/objectsnapper/code/commands/snapselected.h @@ -0,0 +1,59 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: snapselectedcmd.h +// +// Description: Blahblahblah +// +// History: 18/03/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef SNAPSELECTEDCMD_H +#define SNAPSELECTEDCMD_H + +//======================================== +// Nested Includes +//======================================== +#include "main/mayaincludes.h" +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class SnapSelectedCmd : public MPxCommand +{ +public: + SnapSelectedCmd(); + virtual ~SnapSelectedCmd(); + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + virtual MStatus undoIt(); + virtual MStatus redoIt(); + virtual bool isUndoable() const; + + static const char* stringId; + +private: + + MDagPathArray mObjDagPaths; + MVectorArray mOldPositions; + MVectorArray mNewPositions; + + void GetChildMeshNames( MDagPath objDagPath, MStringArray& names ); + + //Prevent wasteful constructor creation. +SnapSelectedCmd( const SnapSelectedCmd& snapselectedcmd ); +SnapSelectedCmd& operator=( const SnapSelectedCmd& snapselectedcmd ); +}; + +#endif //SNAPSELECTEDCMD_H + diff --git a/tools/objectsnapper/code/main/mayaincludes.h b/tools/objectsnapper/code/main/mayaincludes.h new file mode 100644 index 0000000..5f91009 --- /dev/null +++ b/tools/objectsnapper/code/main/mayaincludes.h @@ -0,0 +1,49 @@ +#include <maya/M3dView.h> +#include <maya/MArgList.h> +#include <maya/MCursor.h> +#include <maya/MDagPath.h> +#include <maya/MDGMessage.h> +#include <maya/MDGModifier.h> +#include <maya/MDoubleArray.h> +#include <maya/MEulerRotation.h> +#include <maya/MFnData.h> +#include <maya/MFnDagNode.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnIkJoint.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnMatrixData.h> +#include <maya/MFnMesh.h> +#include <maya/MFnMessageAttribute.h> +#include <maya/MFnNumericAttribute.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MFnTransform.h> +#include <maya/MFnTypedAttribute.h> +#include <maya/MGlobal.h> +#include <maya/MIntArray.h> +#include <maya/MItDag.h> +#include <maya/MItMeshVertex.h> +#include <maya/MItSelectionList.h> +#include <maya/MMatrix.h> +#include <maya/MNodeMessage.h> +#include <maya/MObject.h> +#include <maya/MObjectArray.h> +#include <maya/MPlug.h> +#include <maya/MPlugArray.h> +#include <maya/MPoint.h> +#include <maya/MPointArray.h> +#include <maya/MPxCommand.h> +#include <maya/MPxContext.h> +#include <maya/MPxContextCommand.h> +#include <maya/MPxLocatorNode.h> +#include <maya/MQuaternion.h> +#include <maya/MSelectionList.h> +#include <maya/MStatus.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +#include <maya/MTransformationMatrix.h> +#include <maya/MTypeId.h> +#include <maya/MUiMessage.h> +#include <maya/MVector.h> + +#include <assert.h>
\ No newline at end of file diff --git a/tools/objectsnapper/code/main/pluginMain.cpp b/tools/objectsnapper/code/main/pluginMain.cpp new file mode 100644 index 0000000..0e38b04 --- /dev/null +++ b/tools/objectsnapper/code/main/pluginMain.cpp @@ -0,0 +1,76 @@ +// +// Copyright (C) 2002 Radical Entertainment +// +// File: pluginMain.cpp +// +// Author: Maya SDK Wizard +// +#include <maya/MFnPlugin.h> + +#include "utility/mayahandles.h" + +#include "pluginmain.h" +#include "commands/snapselected.h" + +MStatus initializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is loaded into Maya. It +// registers all of the services that this plug-in provides with +// Maya. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + + MayaHandles::SetHInstance( (void*)(MhInstPlugin) ); + + MFnPlugin plugin( obj, "Radical Entertainment", "4.0.1", "Any"); + + // Add plug-in feature registration here + // + + //Register Nodes + + //Register Contexts + + //Register Commands + REGISTER_COMMAND( plugin, SnapSelectedCmd ); + + + //Run any startup scripts. + MGlobal::sourceFile( "os_main.mel" ); + + return status; +} + +MStatus uninitializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is unloaded from Maya. It +// deregisters all of the services that it was providing. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + MFnPlugin plugin( obj ); + + // Add plug-in feature deregistration here + // + + //Run any cleanup scripts. + MGlobal::sourceFile( "os_cleanup.mel" ); + + //Unregister Commands + + //Unregister Contexts + + //Unregister Nodes + + return status; +} + diff --git a/tools/objectsnapper/code/main/pluginMain.h b/tools/objectsnapper/code/main/pluginMain.h new file mode 100644 index 0000000..502f6fb --- /dev/null +++ b/tools/objectsnapper/code/main/pluginMain.h @@ -0,0 +1,40 @@ +#include "mayaincludes.h" + +//---------------------------------------- +// MACROS +//---------------------------------------- + +#define REGISTER_COMMAND( p, c ) if ( ! ( ( p ).registerCommand( c##::stringId, \ + c##::creator ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_CONTEXT( p, c ) if ( ! ( ( p ).registerContextCommand( c##::stringId, \ + c##Cmd::creator ) \ + ) \ + ) return MS::kFailure + + +#define REGISTER_LOCATOR( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize, \ + MPxNode::kLocatorNode ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_NODE( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize ) \ + ) \ + ) return MS::kFailure + +#define DEREGISTER_COMMAND( p, c ) ( p ).deregisterCommand( c##::stringId ) + +#define DEREGISTER_CONTEXT( p, c ) ( p ).deregisterContextCommand( c##::stringId ) + +//#define DEREGISTER_NODE( p, n ) n##::Unload();\ +// ( p ).deregisterNode( n##::id ) + +#define DEREGISTER_NODE( p, n ) ( p ).deregisterNode( n##::id ) diff --git a/tools/objectsnapper/code/main/stdafx.h b/tools/objectsnapper/code/main/stdafx.h new file mode 100644 index 0000000..3152a3f --- /dev/null +++ b/tools/objectsnapper/code/main/stdafx.h @@ -0,0 +1,19 @@ +#ifndef STDAFX +#define STDAFX + +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// stdafx.h +// +// Description: Header wrapper for using MFC. +// +// Modification History: +// + Created Oct 12, 2001 -- bkusy +//----------------------------------------------------------------------------- +#define VC_EXTRALEAN +#include <afxwin.h> +#include <afxdlgs.h> + + +#endif
\ No newline at end of file diff --git a/tools/objectsnapper/code/precompiled/PCH.cpp b/tools/objectsnapper/code/precompiled/PCH.cpp new file mode 100644 index 0000000..5f77b4a --- /dev/null +++ b/tools/objectsnapper/code/precompiled/PCH.cpp @@ -0,0 +1 @@ +#include "PCH.h"
\ No newline at end of file diff --git a/tools/objectsnapper/code/precompiled/PCH.h b/tools/objectsnapper/code/precompiled/PCH.h new file mode 100644 index 0000000..c14ca45 --- /dev/null +++ b/tools/objectsnapper/code/precompiled/PCH.h @@ -0,0 +1,50 @@ +#include <maya/M3dView.h> +#include <maya/MArgList.h> +#include <maya/MCursor.h> +#include <maya/MDagPath.h> +#include <maya/MDagPathArray.h> +#include <maya/MDGMessage.h> +#include <maya/MDGModifier.h> +#include <maya/MDoubleArray.h> +#include <maya/MEulerRotation.h> +#include <maya/MFnData.h> +#include <maya/MFnDagNode.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnIkJoint.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnMatrixData.h> +#include <maya/MFnMesh.h> +#include <maya/MFnMessageAttribute.h> +#include <maya/MFnNumericAttribute.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MFnTransform.h> +#include <maya/MFnTypedAttribute.h> +#include <maya/MGlobal.h> +#include <maya/MIntArray.h> +#include <maya/MItDag.h> +#include <maya/MItMeshVertex.h> +#include <maya/MItSelectionList.h> +#include <maya/MMatrix.h> +#include <maya/MNodeMessage.h> +#include <maya/MObject.h> +#include <maya/MObjectArray.h> +#include <maya/MPlug.h> +#include <maya/MPlugArray.h> +#include <maya/MPoint.h> +#include <maya/MPointArray.h> +#include <maya/MPxCommand.h> +#include <maya/MPxContext.h> +#include <maya/MPxContextCommand.h> +#include <maya/MPxLocatorNode.h> +#include <maya/MQuaternion.h> +#include <maya/MSelectionList.h> +#include <maya/MStatus.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +#include <maya/MTransformationMatrix.h> +#include <maya/MTypeId.h> +#include <maya/MUiMessage.h> +#include <maya/MVector.h> + +#include <assert.h>
\ No newline at end of file diff --git a/tools/objectsnapper/code/scripts/os_cleanup.mel b/tools/objectsnapper/code/scripts/os_cleanup.mel new file mode 100644 index 0000000..020de04 --- /dev/null +++ b/tools/objectsnapper/code/scripts/os_cleanup.mel @@ -0,0 +1,3 @@ + + +os_RemoveUI();
\ No newline at end of file diff --git a/tools/objectsnapper/code/scripts/os_main.mel b/tools/objectsnapper/code/scripts/os_main.mel new file mode 100644 index 0000000..7a8c567 --- /dev/null +++ b/tools/objectsnapper/code/scripts/os_main.mel @@ -0,0 +1,228 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// TE_main.mel +// +// Description: Installs the Object Snapper (OS) interface. +// As a convention all Object Snapper global procedures +// and global variables are prefixed with "os_". All commands +// exposed through OS plugins are prefixed with "OS_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created March 18 2002 -- Cary Brisebois +//----------------------------------------------------------------------------- + + +global float $gOS_Offset = 0.10; + + +//----------------------------------------------------------------------------- +// o s _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// o s _ M C B _ A b o u t +// +// Synopsis: Display an About Object Snapper window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_MCB_About() +{ + string $pluginVersion = "1.0"; + + string $message = ( "\nSimpsons Road Rage Object Snapper.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About Object Snapper" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// o s _ d o M a i n M e n u I t e m s +// +// Synopsis: Creates the OS menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_doMainMenuItems( string $menu ) +{ + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Snap Single Selected" -command ( "os_MCB_SnapSingleSelected()" ); + + menuItem -divider true; + + menuItem -label "Snap All Selected" -command ( "os_MCB_SnapSelected()" ); + + menuItem -divider true; + + menuItem -label "Snap Tree Line" -command ( "os_MCB_SnapTreeLine()" ); + + menuItem -divider true; + + menuItem -label "About" -command "os_MCB_About()"; + + menuItem -optionBox true -command "os_MCB_OSOptions()"; + + setParent -m ..; +} + +//----------------------------------------------------------------------------- +// o s _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc os_InstallUI() +{ + + global string $gMainWindow; + + // + // Install OS menu as a root menu. + // + if ( `menu -exists os_MainMenu` ) deleteUI os_MainMenu; + menu -label "Object Snapper" -allowOptionBoxes true -parent $gMainWindow os_MainMenu; + + os_doMainMenuItems "os_MainMenu"; +} + +//============================================================================== +// global proc os_RemoveUI +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_RemoveUI() +{ + if ( `menu -exists os_MainMenu` ) deleteUI os_MainMenu; + if ( `window -exists os_OptionWindow` ) deleteUI os_OptionWindow; +} + +//============================================================================== +// global proc os_MCB_SnapSelected +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_SnapSelected() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 0 ); +} + + +//============================================================================== +// global proc os_MCB_SnapSingleSelected +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_SnapSingleSelected() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 1 ); +} + +//============================================================================= +// global proc os_MCB_SnapTreeLine +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================= +global proc os_MCB_SnapTreeLine() +{ + global float $gOS_Offset; + + OS_SnapSelected( $gOS_Offset, 2 ); +} + +//============================================================================== +// global proc os_MCB_OSOptions +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: global +// +//============================================================================== +global proc os_MCB_OSOptions() +{ + global float $gOS_Offset; + + if ( `window -exists os_OptionWindow` ) deleteUI os_OptionWindow; + + window -title "Object Snapper Options" os_OptionWindow; + + columnLayout; + + rowLayout -nc 2; + + text -label "Offset (M):"; + + floatField -min -10.0 -max 10.0 -value $gOS_Offset -cc ("$gOS_Offset = #1"); + + setParent ..; + + setParent ..; + + showWindow; +} + +evalDeferred "os_InstallUI";
\ No newline at end of file diff --git a/tools/relatedfiles/Debug/relatedfiles.log b/tools/relatedfiles/Debug/relatedfiles.log new file mode 100644 index 0000000..2585096 --- /dev/null +++ b/tools/relatedfiles/Debug/relatedfiles.log @@ -0,0 +1,14 @@ +Build started 11/7/2015 5:44:20 PM. + 1>Project "G:\Code\Simpsons Hit&Run\tools\relatedfiles\relatedfiles.vcxproj" on node 4 (Build target(s)). + 1>ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /I../../game/code/constants /I../../game/libs/radmath /I../../game/libs/pure3d/toollib/inc /I../../game/libs/pure3d/constants /I../../game/libs/pure3d/toollib/chunks16/inc /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D RAD_DEBUG /D RAD_PC /D RAD_WIN32 /D _MBCS /Gm- /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Debug/" /Fd".\Debug/vc120.pdb" /Gd /TP /analyze- /errorReport:prompt ..\..\game\libs\pure3d\toollib\src\tlDataChunk.cpp ..\..\game\libs\pure3d\toollib\toollib_extras.cpp + tlDataChunk.cpp + 1>g:\code\simpsons hit&run\game\libs\pure3d\toollib\inc\chunkmanip.hpp(13): fatal error C1083: Cannot open include file: 'tlSmartPropChunk.hpp': No such file or directory + toollib_extras.cpp + 1>g:\code\simpsons hit&run\game\libs\pure3d\toollib\inc\chunkmanip.hpp(13): fatal error C1083: Cannot open include file: 'tlSmartPropChunk.hpp': No such file or directory + Generating Code... + 1>Done Building Project "G:\Code\Simpsons Hit&Run\tools\relatedfiles\relatedfiles.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.49 diff --git a/tools/relatedfiles/Debug/relatedfiles.tlog/cl.command.1.tlog b/tools/relatedfiles/Debug/relatedfiles.tlog/cl.command.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/tools/relatedfiles/Debug/relatedfiles.tlog/cl.command.1.tlog @@ -0,0 +1 @@ +ÿþ
\ No newline at end of file diff --git a/tools/relatedfiles/Debug/relatedfiles.tlog/relatedfiles.lastbuildstate b/tools/relatedfiles/Debug/relatedfiles.tlog/relatedfiles.lastbuildstate new file mode 100644 index 0000000..72cdac1 --- /dev/null +++ b/tools/relatedfiles/Debug/relatedfiles.tlog/relatedfiles.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v120:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit +Debug|Win32|G:\Code\Simpsons Hit&Run\tools\| diff --git a/tools/relatedfiles/Debug/relatedfiles.tlog/unsuccessfulbuild b/tools/relatedfiles/Debug/relatedfiles.tlog/unsuccessfulbuild new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/relatedfiles/Debug/relatedfiles.tlog/unsuccessfulbuild diff --git a/tools/relatedfiles/Debug/vc120.idb b/tools/relatedfiles/Debug/vc120.idb Binary files differnew file mode 100644 index 0000000..f2afced --- /dev/null +++ b/tools/relatedfiles/Debug/vc120.idb diff --git a/tools/relatedfiles/Debug/vc120.pdb b/tools/relatedfiles/Debug/vc120.pdb Binary files differnew file mode 100644 index 0000000..33810eb --- /dev/null +++ b/tools/relatedfiles/Debug/vc120.pdb diff --git a/tools/relatedfiles/relatedfiles.dsp b/tools/relatedfiles/relatedfiles.dsp new file mode 100644 index 0000000..a966e5d --- /dev/null +++ b/tools/relatedfiles/relatedfiles.dsp @@ -0,0 +1,840 @@ +# Microsoft Developer Studio Project File - Name="relatedfiles" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=relatedfiles - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "relatedfiles.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "relatedfiles.mak" CFG="relatedfiles - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "relatedfiles - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "relatedfiles - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "relatedfiles" +# PROP Scc_LocalPath "." +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "relatedfiles - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /I "../../game/libs/pure3d/toollib/inc" /I "../../game/libs/pure3d/constants" /I "../../game/libs/pure3d/toollib/chunks16/inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x1009 /d "NDEBUG" +# ADD RSC /l 0x1009 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "relatedfiles - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../game/libs/pure3d/toollib/inc" /I "../../game/libs/pure3d/constants" /I "../../game/libs/pure3d/toollib/chunks16/inc" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x1009 /d "_DEBUG" +# ADD RSC /l 0x1009 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "relatedfiles - Win32 Release" +# Name "relatedfiles - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Group "chunks16" + +# PROP Default_Filter "" +# Begin Group "chunks" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlAnimatedObjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlAnimationChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlBBoxChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlBillboardObjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlBSphereChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlChannelChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlCollisionObjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlExpressionChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFencelineChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleJointChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleObjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFontChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlGameAttrChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlImageChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlIntersectionChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlLightChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlLocatorChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlMeshChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlOpticEffectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlParticleSystemChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlPhotonMapChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlPhysicsObjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlPrimGroupChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlRoadChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlRoadSegmentChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlScroobyProjectChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlShaderChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlShadowSkinChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlSkinChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlSmartPropChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlSpriteChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlTextureChunk.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlWallChunk.sc +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlCameraAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlCameraChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlCompositeDrawableChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlEntityChannelChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlExportInfoChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlExpressionAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlHistoryChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlLightAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlLightGroupChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlMultiControllerChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlPoseAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphTransformAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlSkeletonChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlTextureAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlVertexAnimChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlVertexOffsetExpressionChunk16.sc +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\Schema16\tlVisibilityAnimChunk16.sc +# End Source File +# End Group +# Begin Group "inc" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\DataManip.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\dospath.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\getopt.h +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\glob.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\greyscale.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\hash.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\lzr.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\lzrf.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\pddi\ps2\packet.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\porc.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\pddi\ps2\ps2prim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\simdata.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlAdjFaceList.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlBox.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlBSPTree.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlcamera.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlCollisionObject.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlColour.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlCompressedByteStream.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlExportInfo.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFile.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFlexibleJoint.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFlexibleObject.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFont.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlGCComponentQuantizer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlGCPrimBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlHashTable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlImage.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlIndexedSkinVertex.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlKeyDefs.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlLight.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlLightGroup.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlOffsetSkinVertex.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPDDI.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPhysicsObject.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPlane.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPose.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlPS2SkinPrimBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlRay.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlRC.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSegment.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlShader.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlString.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTarga.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTranAnimKeys.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTsEdge.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTsTriangle.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTsTriangleToTriStripConverter.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTsVertexCache.h +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTsVertexConnectivity.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlUV.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlversion.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\ChunkManip.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\code\constants\srrchunks.h +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\src\tlDataChunk.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\inc\toollib.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\game\libs\pure3d\toollib\toollib_extras.cpp +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/tools/relatedfiles/relatedfiles.vcproj b/tools/relatedfiles/relatedfiles.vcproj new file mode 100644 index 0000000..a66642e --- /dev/null +++ b/tools/relatedfiles/relatedfiles.vcproj @@ -0,0 +1,701 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="relatedfiles" + SccProjectName="Perforce Project" + SccAuxPath="" + SccLocalPath="." + SccProvider="MSSCCI:Perforce SCM"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="../../game/code/constants;../../game/libs/radmath;../../game/libs/pure3d/toollib/inc;../../game/libs/pure3d/constants;../../game/libs/pure3d/toollib/chunks16/inc" + PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;RAD_RELEASE;RAD_PC;RAD_WIN32" + StringPooling="TRUE" + RuntimeLibrary="0" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/relatedfiles.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="odbc32.lib odbccp32.lib" + OutputFile=".\Release/relatedfiles.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreDefaultLibraryNames="LIBC.lib;LIBCMT.lib" + ProgramDatabaseFile=".\Release/relatedfiles.pdb" + SubSystem="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/relatedfiles.tlb"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../../game/code/constants;../../game/libs/radmath;../../game/libs/pure3d/toollib/inc;../../game/libs/pure3d/constants;../../game/libs/pure3d/toollib/chunks16/inc" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;RAD_DEBUG;RAD_PC;RAD_WIN32" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/relatedfiles.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="odbc32.lib odbccp32.lib" + OutputFile=".\Debug/relatedfiles.exe" + LinkIncremental="2" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/relatedfiles.pdb" + SubSystem="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/relatedfiles.tlb"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl"> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\ChunkManip.hpp"> + </File> + <File + RelativePath="..\..\game\code\constants\srrchunks.h"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\src\tlDataChunk.cpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\toollib.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\toollib_extras.cpp"> + </File> + <Filter + Name="chunks16" + Filter=""> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlCameraAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlCameraChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlCompositeDrawableChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlEntityChannelChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlExportInfoChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlHistoryChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlLightAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlLightGroupChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlMultiControllerChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlPoseAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphTransformAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlSkeletonChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlTextureAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlVertexAnimChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlVertexOffsetExpressionChunk16.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlVisibilityAnimChunk16.sc"> + </File> + <Filter + Name="chunks" + Filter=""> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlAnimatedObjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlAnimationChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlBBoxChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlBSphereChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlBillboardObjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlChannelChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlCollisionObjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFencelineChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleJointChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleObjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFontChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlGameAttrChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlImageChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlIntersectionChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlLightChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlLocatorChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlMeshChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlOpticEffectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlParticleSystemChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlPhotonMapChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlPhysicsObjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlPrimGroupChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlRoadChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlRoadSegmentChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlScroobyProjectChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlShaderChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlShadowSkinChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlSkinChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlSmartPropChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlSpriteChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlTextureChunk.sc"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\Schema16\tlWallChunk.sc"> + </File> + </Filter> + </Filter> + <Filter + Name="inc" + Filter=""> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\DataManip.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\dospath.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\getopt.h"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\glob.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\greyscale.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\hash.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\lzr.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\lzrf.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\pddi\ps2\packet.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\porc.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\pddi\ps2\ps2prim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\simdata.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlAdjFaceList.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlBSPTree.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlCollisionObject.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlCompressedByteStream.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlExportInfo.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFlexibleJoint.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFlexibleObject.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlGCComponentQuantizer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlGCPrimBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlHashTable.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlIndexedSkinVertex.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlKeyDefs.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlLightGroup.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlOffsetSkinVertex.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPDDI.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPS2SkinPrimBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPhysicsObject.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPlane.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlRC.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSegment.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlString.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTarga.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTranAnimKeys.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTsEdge.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTsTriangle.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTsTriangleToTriStripConverter.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTsVertexCache.h"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTsVertexConnectivity.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlcamera.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"> + </File> + <File + RelativePath="..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"> + </File> + </Filter> + </Filter> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> + </Filter> + <Filter + Name="Resource Files" + Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/relatedfiles/relatedfiles.vcxproj b/tools/relatedfiles/relatedfiles.vcxproj new file mode 100644 index 0000000..3bb4594 --- /dev/null +++ b/tools/relatedfiles/relatedfiles.vcxproj @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <SccProjectName> + </SccProjectName> + <SccAuxPath /> + <SccLocalPath> + </SccLocalPath> + <SccProvider> + </SccProvider> + <ProjectGuid>{EF05D776-F91E-422F-BD64-16B3F5557888}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>false</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>false</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>.\Release\</OutDir> + <IntDir>.\Release\</IntDir> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>.\Debug\</OutDir> + <IntDir>.\Debug\</IntDir> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> + <AdditionalIncludeDirectories>../../game/code/constants;../../game/libs/radmath;../../game/libs/pure3d/toollib/inc;../../game/libs/pure3d/constants;../../game/libs/pure3d/toollib/chunks16/inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;RAD_RELEASE;RAD_PC;RAD_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Release/relatedfiles.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Release/</AssemblerListingLocation> + <ObjectFileName>.\Release/</ObjectFileName> + <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>.\Release/relatedfiles.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <IgnoreSpecificDefaultLibraries>LIBC.lib;LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <ProgramDatabaseFile>.\Release/relatedfiles.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + </Link> + <Midl> + <TypeLibraryName>.\Release/relatedfiles.tlb</TypeLibraryName> + </Midl> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>../../game/code/constants;../../game/libs/radmath;../../game/libs/pure3d/toollib/inc;../../game/libs/pure3d/constants;../../game/libs/pure3d/toollib/chunks16/inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;RAD_DEBUG;RAD_PC;RAD_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <PrecompiledHeader /> + <PrecompiledHeaderOutputFile>.\Debug/relatedfiles.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Debug/</AssemblerListingLocation> + <ObjectFileName>.\Debug/</ObjectFileName> + <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>.\Debug/relatedfiles.exe</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>.\Debug/relatedfiles.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + </Link> + <Midl> + <TypeLibraryName>.\Debug/relatedfiles.tlb</TypeLibraryName> + </Midl> + <ResourceCompile> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\ChunkManip.hpp" /> + <ClInclude Include="..\..\game\code\constants\srrchunks.h" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\toollib.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\DataManip.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\dospath.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\getopt.h" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\glob.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\greyscale.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\hash.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\lzr.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\lzrf.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\pddi\ps2\packet.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\porc.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\pddi\ps2\ps2prim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\simdata.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAdjFaceList.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBSPTree.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBox.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCollisionObject.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlColour.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCompressedByteStream.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExportInfo.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFile.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFlexibleJoint.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFlexibleObject.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFont.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGCComponentQuantizer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGCPrimBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHashTable.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlImage.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIndexedSkinVertex.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlKeyDefs.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLight.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLightGroup.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOffsetSkinVertex.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPDDI.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPS2SkinPrimBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPhysicsObject.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPlane.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPose.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlRC.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlRay.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSegment.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlShader.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlString.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTable.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTarga.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTranAnimKeys.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsEdge.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsTriangle.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsTriangleToTriStripConverter.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsVertexCache.h" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsVertexConnectivity.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlUV.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlcamera.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp" /> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlversion.hpp" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\game\libs\pure3d\toollib\src\tlDataChunk.cpp" /> + <ClCompile Include="..\..\game\libs\pure3d\toollib\toollib_extras.cpp" /> + </ItemGroup> + <ItemGroup> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCameraAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCameraChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCompositeDrawableChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlEntityChannelChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExportInfoChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlHistoryChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightGroupChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlMultiControllerChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPoseAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphTransformAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSkeletonChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlTextureAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVertexAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVertexOffsetExpressionChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVisibilityAnimChunk16.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlAnimatedObjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlAnimationChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBBoxChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBSphereChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBillboardObjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlChannelChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCollisionObjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFencelineChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleJointChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleObjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFontChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlGameAttrChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlImageChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlIntersectionChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLocatorChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlMeshChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlOpticEffectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlParticleSystemChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPhotonMapChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPhysicsObjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPrimGroupChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlRoadChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlRoadSegmentChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScroobyProjectChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlShaderChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlShadowSkinChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSkinChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSmartPropChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSpriteChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlTextureChunk.sc" /> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlWallChunk.sc" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/tools/relatedfiles/relatedfiles.vcxproj.filters b/tools/relatedfiles/relatedfiles.vcxproj.filters new file mode 100644 index 0000000..17d51c2 --- /dev/null +++ b/tools/relatedfiles/relatedfiles.vcxproj.filters @@ -0,0 +1,581 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Header Files"> + <UniqueIdentifier>{24f2d142-66d2-4581-8cb8-236b62fc2ead}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl</Extensions> + </Filter> + <Filter Include="Header Files\chunks16"> + <UniqueIdentifier>{6e945c09-ba0d-4148-b932-c83427a020fc}</UniqueIdentifier> + </Filter> + <Filter Include="Header Files\chunks16\chunks"> + <UniqueIdentifier>{fe1fbc11-6d83-4fc4-ae75-0c211508c74d}</UniqueIdentifier> + </Filter> + <Filter Include="Header Files\inc"> + <UniqueIdentifier>{ef15e62c-d49e-4ab4-9e8c-475560c344cc}</UniqueIdentifier> + </Filter> + <Filter Include="Source Files"> + <UniqueIdentifier>{6ef7a34c-377b-4dff-835c-a05ee7cb1176}</UniqueIdentifier> + <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{6a3e65aa-0197-4465-85e8-796fe961e746}</UniqueIdentifier> + <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\ChunkManip.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\game\code\constants\srrchunks.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\toollib.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\DataManip.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\dospath.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\getopt.h"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\glob.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\greyscale.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\hash.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\lzr.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\lzrf.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\pddi\ps2\packet.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\porc.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\pddi\ps2\ps2prim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\simdata.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAdjFaceList.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBSPTree.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCollisionObject.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlCompressedByteStream.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExportInfo.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFlexibleJoint.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFlexibleObject.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGCComponentQuantizer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGCPrimBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHashTable.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIndexedSkinVertex.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlKeyDefs.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLightGroup.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOffsetSkinVertex.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPDDI.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPS2SkinPrimBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPhysicsObject.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPlane.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlRC.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSegment.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlString.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTarga.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTranAnimKeys.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsEdge.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsTriangle.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsTriangleToTriStripConverter.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsVertexCache.h"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTsVertexConnectivity.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlcamera.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + <ClInclude Include="..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"> + <Filter>Header Files\inc</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\game\libs\pure3d\toollib\src\tlDataChunk.cpp"> + <Filter>Header Files</Filter> + </ClCompile> + <ClCompile Include="..\..\game\libs\pure3d\toollib\toollib_extras.cpp"> + <Filter>Header Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCameraAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCameraChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCompositeDrawableChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlEntityChannelChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExportInfoChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlHistoryChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightGroupChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlMultiControllerChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPoseAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphTransformAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSkeletonChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlTextureAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVertexAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVertexOffsetExpressionChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlVisibilityAnimChunk16.sc"> + <Filter>Header Files\chunks16</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlAnimatedObjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlAnimationChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBBoxChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBSphereChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlBillboardObjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlChannelChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlCollisionObjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlExpressionChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFencelineChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleJointChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFlexibleObjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFontChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlFrameControllerChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlGameAttrChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlImageChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlIntersectionChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLightChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlLocatorChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlMeshChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlOpticEffectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlParticleSystemChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPhotonMapChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPhysicsObjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlPrimGroupChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlRoadChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlRoadSegmentChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScenegraphChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlScroobyProjectChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlShaderChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlShadowSkinChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSkinChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSmartPropChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlSpriteChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlTextureChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + <None Include="..\..\game\libs\pure3d\toollib\Schema16\tlWallChunk.sc"> + <Filter>Header Files\chunks16\chunks</Filter> + </None> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/art/new.bmp b/tools/statepropbuilder/apps/spbuilder/art/new.bmp Binary files differnew file mode 100644 index 0000000..df77654 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/art/new.bmp diff --git a/tools/statepropbuilder/apps/spbuilder/art/open.bmp b/tools/statepropbuilder/apps/spbuilder/art/open.bmp Binary files differnew file mode 100644 index 0000000..7a468c4 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/art/open.bmp diff --git a/tools/statepropbuilder/apps/spbuilder/art/save.bmp b/tools/statepropbuilder/apps/spbuilder/art/save.bmp Binary files differnew file mode 100644 index 0000000..8bfd2cc --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/art/save.bmp diff --git a/tools/statepropbuilder/apps/spbuilder/art/saveas.bmp b/tools/statepropbuilder/apps/spbuilder/art/saveas.bmp Binary files differnew file mode 100644 index 0000000..8845043 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/art/saveas.bmp diff --git a/tools/statepropbuilder/apps/spbuilder/bin/data/Copy of events.txt b/tools/statepropbuilder/apps/spbuilder/bin/data/Copy of events.txt new file mode 100644 index 0000000..a2302b6 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/data/Copy of events.txt @@ -0,0 +1,16 @@ +START +STOP +TOGGLE +OPEN +CLOSE +ENABLE +DISABLE +TALK +DESTROY +BREAK +IDLE +ATTACK +FLEE +COLLECT +GETHIT +TRAMPOLINE_BOUNCE diff --git a/tools/statepropbuilder/apps/spbuilder/bin/data/callbacks.txt b/tools/statepropbuilder/apps/spbuilder/bin/data/callbacks.txt new file mode 100644 index 0000000..79aad12 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/data/callbacks.txt @@ -0,0 +1,18 @@ +REMOVE_FROM_WORLD +SPAWN_5_COINS +REMOVE_COLLISION_VOLUME +FIRE_ENERGY_BOLT +KILL SPEED +SPAWN_10_COINS +SPAWN_15_COINS +SPAWN_20_COINS +RADIATE_FORCE +EMIT_LEAVES +OBJECT_DESTROYED +SPAWN_5_COINS_Z +SPAWN_1_COIN +COLA_DESTROYED +CAMSHAKE +REMOVE_1ST_VOL +REMOVE_2ND_VOL +REMOVE_3RD_VOL diff --git a/tools/statepropbuilder/apps/spbuilder/bin/data/events.txt b/tools/statepropbuilder/apps/spbuilder/bin/data/events.txt new file mode 100644 index 0000000..16f124d --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/data/events.txt @@ -0,0 +1,12 @@ +IDLE +FADE_IN +FADE_OUT +MOVING +ATTACK_CHARGING +ATTACK_CHARGED +ATTACKING +DESTROYED +HIT +FEATHER_TOUCH +STOMP +VEHICLE_HIT
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/bin/data/init.txt b/tools/statepropbuilder/apps/spbuilder/bin/data/init.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/data/init.txt diff --git a/tools/statepropbuilder/apps/spbuilder/bin/empty.txt b/tools/statepropbuilder/apps/spbuilder/bin/empty.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/empty.txt diff --git a/tools/statepropbuilder/apps/spbuilder/bin/pddidx8d.dll b/tools/statepropbuilder/apps/spbuilder/bin/pddidx8d.dll Binary files differnew file mode 100644 index 0000000..a31fd8c --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/pddidx8d.dll diff --git a/tools/statepropbuilder/apps/spbuilder/bin/spbuilder.exe b/tools/statepropbuilder/apps/spbuilder/bin/spbuilder.exe Binary files differnew file mode 100644 index 0000000..074eaa8 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/spbuilder.exe diff --git a/tools/statepropbuilder/apps/spbuilder/bin/spengine.dll b/tools/statepropbuilder/apps/spbuilder/bin/spengine.dll Binary files differnew file mode 100644 index 0000000..9efa51b --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/bin/spengine.dll diff --git a/tools/statepropbuilder/apps/spbuilder/build/spbuilder/spbuilder.bpr b/tools/statepropbuilder/apps/spbuilder/build/spbuilder/spbuilder.bpr new file mode 100644 index 0000000..c51533b --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/build/spbuilder/spbuilder.bpr @@ -0,0 +1,128 @@ +<?xml version='1.0' encoding='utf-8' ?> +<!-- C++Builder XML Project --> +<PROJECT> + <MACROS> + <VERSION value="BCB.05.03"/> + <PROJECT value="../../bin\spbuilder.exe"/> + <OBJFILES value="spbuilder.obj ..\..\code\sp\builder\main.obj + ..\..\code\sp\builder\fcframe.obj ..\..\code\sp\builder\visframe.obj + ..\..\code\sp\builder\eventsframe.obj + ..\..\code\sp\builder\callbacksframe.obj"/> + <RESFILES value="spbuilder.res"/> + <DEFFILE value=""/> + <RESDEPEN value="$(RESFILES) ..\..\code\sp\builder\main.dfm + ..\..\code\sp\builder\fcframe.dfm ..\..\code\sp\builder\visframe.dfm + ..\..\code\sp\builder\eventsframe.dfm + ..\..\code\sp\builder\callbacksframe.dfm"/> + <LIBFILES value=""/> + <LIBRARIES value="Vclx50.lib Vcl50.lib"/> + <SPARELIBS value="Vcl50.lib Vclx50.lib"/> + <PACKAGES value="Vcl50.bpi Vclx50.bpi bcbsmp50.bpi Qrpt50.bpi Vcldb50.bpi Vclbde50.bpi + ibsmp50.bpi vcldbx50.bpi TeeUI50.bpi TeeDB50.bpi Tee50.bpi TeeQR50.bpi + VCLIB50.bpi bcbie50.bpi vclie50.bpi Inetdb50.bpi Inet50.bpi NMFast50.bpi + dclocx50.bpi bcb2kaxserver50.bpi"/> + <PATHCPP value=".;..\..\code\sp\builder"/> + <PATHPAS value=".;"/> + <PATHRC value=".;"/> + <PATHASM value=".;"/> + <DEBUGLIBPATH value="$(BCB)\lib\debug"/> + <RELEASELIBPATH value="$(BCB)\lib\release"/> + <LINKER value="tlink32"/> + <USERDEFINES value="_DEBUG"/> + <SYSDEFINES value="NO_STRICT"/> + <MAINSOURCE value="spbuilder.cpp"/> + <INCLUDEPATH value=""D:\Program Files\Borland\CBuilder5\Projects\";..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code"/> + <LIBPATH value=""D:\Program Files\Borland\CBuilder5\Projects\";..\..\code\sp\builder;$(BCB)\lib\obj;$(BCB)\lib;..\..\bin"/> + <WARNINGS value="-w-par"/> + </MACROS> + <OPTIONS> + <CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c + -tW -tWM"/> + <PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/> + <RFLAGS value=""/> + <AFLAGS value="/mx /w2 /zi"/> + <LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/> + </OPTIONS> + <LINKER> + <ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/> + <ALLRES value="$(RESFILES)"/> + <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib spengineb.lib"/> + </LINKER> + <IDEOPTIONS> +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=6 +Item0=D:\Program Files\Borland\CBuilder5\Projects\;..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code +Item1=D:\Program Files\Borland\CBuilder5\Projects;..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code +Item2=..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code +Item3=..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code\sp +Item4=..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl;..\..\code\sp\ +Item5=..\..\code\sp\builder;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=4 +Item0=D:\Program Files\Borland\CBuilder5\Projects\;..\..\code\sp\builder;$(BCB)\lib\obj;$(BCB)\lib;..\..\bin +Item1=D:\Program Files\Borland\CBuilder5\Projects;..\..\code\sp\builder;$(BCB)\lib\obj;$(BCB)\lib;..\..\bin +Item2=..\..\code\sp\builder;$(BCB)\lib\obj;$(BCB)\lib;..\..\bin +Item3=..\..\code\sp\builder;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[HistoryLists\hlFinalOutputDir] +Count=2 +Item0=../../bin\ +Item1=../../bin + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + </IDEOPTIONS> +</PROJECT>
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsp b/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsp new file mode 100644 index 0000000..0e4b5e2 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsp @@ -0,0 +1,179 @@ +# Microsoft Developer Studio Project File - Name="spengine" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=spengine - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "spengine.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "spengine.mak" CFG="spengine - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "spengine - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "spengine - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "spengine" +# PROP Scc_LocalPath "." +CPP=snCl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "spengine - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPENGINE_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../code" /I "../../../../../ftech/radcore/inc/" /I "../../../../../radmath/" /I "../../../../../pure3d/" /I "../../../../../poser/inc/" /I "../../../../../pure3d/toollib/inc" /I "../../../../../pure3d/constants/" /I "../../../../../sim/" /D "NDEBUG" /D "RAD_TUNE" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "RAD_WIN32" /D "RAD_PC" /D "SMARTPROP_ENGINE" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /dll /machine:I386 /out:"../../bin/spengine.dll" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy ..\..\..\..\..\pure3d\build\lib\pddidx8t.dll ..\..\bin coff2omf release\spengine.lib ..\..\bin\spengineb.lib +# End Special Build Tool + +!ELSEIF "$(CFG)" == "spengine - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SPENGINE_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GR /ZI /Od /I "../../code/" /I "../../../../../radcore/inc/" /I "../../../../../radmath" /I "../../../../../pure3d/" /I "../../../../../sim/" /I "../../../../../poser/inc/" /I "../../../../../pure3d/toollib/inc" /I "../../../../../pure3d/constants/" /I "../../../../../radcontent/inc" /D "_DEBUG" /D "RAD_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "RAD_WIN32" /D "RAD_PC" /D "SMARTPROP_ENGINE" /FR /YX /FD /I /I /I /I /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib /nologo /dll /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"../../bin/spengine.dll" /pdbtype:sept +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy ..\..\..\..\..\pure3d\build\lib\pddidx8d.dll ..\..\bin coff2omf debug\spengine.lib ..\..\bin\spengineb.lib +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "spengine - Win32 Release" +# Name "spengine - Win32 Debug" +# Begin Group "interface" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\code\sp\interface\base.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\interface\context.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\interface.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\interface\platform.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\interface\workspace.hpp +# End Source File +# End Group +# Begin Group "engine" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\code\sp\engine\aicollisionsolveragent.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\aicollisionsolveragent.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\context.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\context.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\dllmain.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\platform.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\stateprop.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\stateprop.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\statepropdata.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\statepropdata.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\statepropdatatypes.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\workspace.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\code\sp\engine\workspace.hpp +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsw b/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsw new file mode 100644 index 0000000..520d8ab --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/build/spengine/spengine.dsw @@ -0,0 +1,245 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Pure3D"=..\..\..\..\..\pure3d\build\win32\Pure3D.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Pure3D + ..\..\..\..\..\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "freetype"=..\..\..\..\..\pure3d\lib\freetype\builds\win32\visualc\freetype.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + "$/DEV/freetype", KAOAAAAA + ..\..\..\..\..\pure3d\lib\freetype\builds\win32\visualc + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "libpng"=..\..\..\..\..\pure3d\build\win32\libpng.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + libpng + ..\..\..\..\..\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "pddidx8"=..\..\..\..\..\pure3d\build\win32\pddidx8.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + nbrooke-dual + ..\..\..\..\..\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "poser"=..\..\..\..\..\poser\build\win32\poser.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + poser + ..\..\..\..\..\poser + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "radcontent"=..\..\..\..\..\radcontent\build\win32\radcontent.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + radcontent + ..\..\..\..\..\radcontent + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "radcore"=..\..\..\..\..\radcore\build\win32\radcore.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + radcore + ..\..\..\..\..\radcore\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "radmath"=..\..\..\..\..\radmath\build\win32\radmath.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + nbrooke-dual + ..\..\..\..\..\radmath\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "sim"=..\..\..\..\..\sim\build\win32\sim.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + sim + ..\..\..\..\..\sim + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "spengine"=.\spengine.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + spengine + . + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name pddidx8 + End Project Dependency + Begin Project Dependency + Project_Dep_Name Pure3D + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcore + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name sim + End Project Dependency + Begin Project Dependency + Project_Dep_Name poser + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcontent + End Project Dependency +}}} + +############################################################################### + +Project: "toollib"=..\..\..\..\..\pure3d\toollib\toollib.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + toollib + ..\..\..\..\..\pure3d\toollib + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "zlib"=..\..\..\..\..\pure3d\build\win32\zlib.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + zlib + ..\..\..\..\..\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.cpp new file mode 100644 index 0000000..adc81aa --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.cpp @@ -0,0 +1,73 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#pragma hdrstop + +#include <sp/interface.hpp> +#include "callbacksframe.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +extern bool g_ForceDataUpdate; +extern bool g_IsDataSaved; + +TFrame4 *Frame4; +//--------------------------------------------------------------------------- +__fastcall TFrame4::TFrame4(TComponent* Owner,int cbindex) : + TFrame(Owner), + m_CBIndex( cbindex ) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TFrame4::CallbackComboBoxChange(TObject *Sender) +{ + CallbackData cbData; + SPGetCallbackData( SPGetCurrentState() , m_CBIndex , &cbData ); + + int index = CallbackComboBox->ItemIndex; + AnsiString eventname = CallbackComboBox->Items->Strings[index]; + SPEditCallback( SPGetCurrentState() , m_CBIndex , eventname.c_str() , index , cbData.onFrame ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame4::OnFrameEditBoxChange(TObject *Sender) +{ + CallbackData cbData; + SPGetCallbackData( SPGetCurrentState() , m_CBIndex , &cbData ); + + AnsiString onFrame = OnFrameEditBox->Text; + float frame = 0.f; + try + { + frame = onFrame.ToDouble(); + } + catch (Exception&) + { + frame = cbData.onFrame; + AnsiString oldFrame; + oldFrame.sprintf("%0.3f" , frame); + OnFrameEditBox->Text = oldFrame; + } + + SPEditCallback( SPGetCurrentState() , m_CBIndex , cbData.callbackName , cbData.callbackID , frame ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame4::Button1Click(TObject *Sender) +{ + SPDeleteCallback( SPGetCurrentState() , m_CBIndex ); + g_ForceDataUpdate = true; + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TFrame4::OnFrameEditBoxExit(TObject *Sender) +{ + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.dfm b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.dfm new file mode 100644 index 0000000..bddefe4 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.dfm @@ -0,0 +1,58 @@ +object Frame4: TFrame4 + Left = 0 + Top = 0 + Width = 286 + Height = 71 + TabOrder = 0 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 286 + Height = 71 + Align = alClient + BevelInner = bvLowered + TabOrder = 0 + object Label2: TLabel + Left = 8 + Top = 10 + Width = 41 + Height = 13 + Caption = 'Callback' + end + object Label1: TLabel + Left = 8 + Top = 35 + Width = 43 + Height = 13 + Caption = 'On frame' + end + object CallbackComboBox: TComboBox + Left = 56 + Top = 5 + Width = 121 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = CallbackComboBoxChange + end + object OnFrameEditBox: TEdit + Left = 56 + Top = 30 + Width = 49 + Height = 21 + TabOrder = 1 + OnChange = OnFrameEditBoxChange + OnExit = OnFrameEditBoxExit + end + object Button1: TButton + Left = 110 + Top = 30 + Width = 67 + Height = 23 + Caption = 'delete' + TabOrder = 2 + OnClick = Button1Click + end + end +end diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.h b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.h new file mode 100644 index 0000000..b2b0519 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/callbacksframe.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- + + +#ifndef callbacksframeH +#define callbacksframeH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TFrame4 : public TFrame +{ +__published: // IDE-managed Components + TPanel *Panel1; + TLabel *Label2; + TComboBox *CallbackComboBox; + TLabel *Label1; + TEdit *OnFrameEditBox; + TButton *Button1; + void __fastcall CallbackComboBoxChange(TObject *Sender); + void __fastcall OnFrameEditBoxChange(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall OnFrameEditBoxExit(TObject *Sender); +private: // User declarations + int m_CBIndex; +public: // User declarations + __fastcall TFrame4(TComponent* Owner,int cbindex); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TFrame4 *Frame4; +//--------------------------------------------------------------------------- +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.cpp new file mode 100644 index 0000000..09ded82 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.cpp @@ -0,0 +1,75 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#pragma hdrstop +#include <sp/interface.hpp> +#include "eventsframe.h" +#include "main.h" + +extern float g_ForceDataUpdate; +extern bool g_IsDataSaved; + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TFrame3 *Frame3; +//--------------------------------------------------------------------------- +__fastcall TFrame3::TFrame3(TComponent* Owner , int EventIndex ) : + TFrame(Owner), + m_EventIndex( EventIndex ) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TFrame3::EventComboBoxChange(TObject *Sender) +{ + EventData eventData; + SPGetEventData( SPGetCurrentState() , m_EventIndex , &eventData ); + int index = EventComboBox->ItemIndex; + AnsiString eventname = EventComboBox->Items->Strings[index]; + SPEditEvent( SPGetCurrentState() , m_EventIndex , eventname.c_str() , index , eventData.toState ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame3::ToFrameEditBoxChange(TObject *Sender) +{ + EventData eventData; + SPGetEventData( SPGetCurrentState() , m_EventIndex , &eventData ); + + int index = EventComboBox->ItemIndex; + AnsiString eventname = EventComboBox->Items->Strings[index]; + AnsiString toState = ToFrameEditBox->Text; + int state = 0; + try + { + state = toState.ToInt(); + } + catch (Exception&) + { + state = eventData.toState + 1; + } + if ( state > SPGetNumberOfStates() || state == 0 ) + { + state = eventData.toState + 1; + g_ForceDataUpdate = true; + } + + SPEditEvent( SPGetCurrentState() , m_EventIndex , eventname.c_str() , index , state - 1 ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame3::Button1Click(TObject *Sender) +{ + SPDeleteEvent( SPGetCurrentState() , m_EventIndex ); + g_ForceDataUpdate = true; + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame3::ToFrameEditBoxExit(TObject *Sender) +{ + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.dfm b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.dfm new file mode 100644 index 0000000..cf1d0e6 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.dfm @@ -0,0 +1,58 @@ +object Frame3: TFrame3 + Left = 0 + Top = 0 + Width = 212 + Height = 62 + TabOrder = 0 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 212 + Height = 62 + Align = alClient + BevelInner = bvLowered + TabOrder = 0 + object Label1: TLabel + Left = 8 + Top = 10 + Width = 44 + Height = 13 + Caption = 'On event' + end + object Label2: TLabel + Left = 8 + Top = 35 + Width = 50 + Height = 13 + Caption = 'go to state' + end + object EventComboBox: TComboBox + Left = 64 + Top = 5 + Width = 113 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + OnChange = EventComboBoxChange + end + object ToFrameEditBox: TEdit + Left = 64 + Top = 30 + Width = 41 + Height = 21 + TabOrder = 1 + OnChange = ToFrameEditBoxChange + OnExit = ToFrameEditBoxExit + end + object Button1: TButton + Left = 110 + Top = 30 + Width = 67 + Height = 23 + Caption = 'delete' + TabOrder = 2 + OnClick = Button1Click + end + end +end diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.h b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.h new file mode 100644 index 0000000..9154617 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/eventsframe.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- + + +#ifndef eventsframeH +#define eventsframeH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TFrame3 : public TFrame +{ +__published: // IDE-managed Components + TPanel *Panel1; + TLabel *Label1; + TComboBox *EventComboBox; + TLabel *Label2; + TEdit *ToFrameEditBox; + TButton *Button1; + void __fastcall EventComboBoxChange(TObject *Sender); + void __fastcall ToFrameEditBoxChange(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall ToFrameEditBoxExit(TObject *Sender); +private: // User declarations + int m_EventIndex; +public: // User declarations + __fastcall TFrame3(TComponent* Owner , int EventIndex ); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TFrame3 *Frame3; +//--------------------------------------------------------------------------- +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.cpp new file mode 100644 index 0000000..0a508b4 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.cpp @@ -0,0 +1,136 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#include <sp/interface.hpp> +#pragma hdrstop + +#include "fcframe.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +extern bool g_IsDataSaved; +extern bool g_ForceDataUpdate; + +TFrame1 *Frame1; +//--------------------------------------------------------------------------- +__fastcall TFrame1::TFrame1(TComponent* Owner , int fcindex) + : TFrame(Owner) , m_FCIndex( fcindex ) +{ +} + +//--------------------------------------------------------------------------- + + +void __fastcall TFrame1::CyclicCheckBoxClick(TObject *Sender) +{ + SPSetCyclic( SPGetCurrentState() , m_FCIndex , this->CyclicCheckBox->State != cbUnchecked ); + this->cycleForEditBox->Enabled = CyclicCheckBox->State != cbUnchecked; + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::MaxFrameEditBoxChange(TObject *Sender) +{ + FrameControllerData fcData; + SPGetFrameControllerData( SPGetCurrentState() , m_FCIndex , &fcData ); + + AnsiString frame; + frame = this->MaxFrameEditBox->Text; + float f = 0.0f; + try + { + f = frame.ToDouble(); + } + catch (Exception&) + { + f = fcData.maxFrame; + } + + SPSetFrameRange( SPGetCurrentState() , m_FCIndex , fcData.minFrame , f ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::MinFrameEditBoxChange(TObject *Sender) +{ + FrameControllerData fcData; + SPGetFrameControllerData( SPGetCurrentState() , m_FCIndex , &fcData ); + + AnsiString frame; + frame = this->MinFrameEditBox->Text; + float f = 0.0f; + + try + { + f = frame.ToDouble(); + + } + catch (Exception&) + { + f = fcData.minFrame; + } + + SPSetFrameRange( SPGetCurrentState() , m_FCIndex , f , fcData.maxFrame ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::holdFrameCheckboxClick(TObject *Sender) +{ + SPSetHoldFrame( SPGetCurrentState() , m_FCIndex , holdFrameCheckbox->Checked ); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::speedEditBoxChange(TObject *Sender) +{ + FrameControllerData fcData; + SPGetFrameControllerData( SPGetCurrentState() , m_FCIndex , &fcData ); + + AnsiString speed; + speed = this->speedEditBox->Text; + float fSpeed = 0.0f; + + try + { + fSpeed = speed.ToDouble(); + } + catch (Exception&) + { + fSpeed = fcData.relativeSpeed; + } + + SPSetRelativeSpeed( SPGetCurrentState() , m_FCIndex , fSpeed ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::cycleForEditBoxChange(TObject *Sender) +{ + FrameControllerData fcData; + SPGetFrameControllerData( SPGetCurrentState() , m_FCIndex , &fcData ); + + AnsiString cycles; + cycles = cycleForEditBox->Text; + int iCycles = 0; + try + { + iCycles = cycles.ToInt(); + } + catch (Exception&) + { + iCycles = fcData.numberOfCycles; + } + + SPSetNumberOfCycles( SPGetCurrentState() , m_FCIndex , iCycles ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrame1::EditBoxExit(TObject *Sender) +{ + //do something here + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.dfm b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.dfm new file mode 100644 index 0000000..fb63774 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.dfm @@ -0,0 +1,120 @@ +object Frame1: TFrame1 + Left = 0 + Top = 0 + Width = 1066 + Height = 30 + TabOrder = 0 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 1066 + Height = 30 + Align = alClient + BevelInner = bvLowered + TabOrder = 0 + object FrameControllerNameLabel: TLabel + Left = 10 + Top = 7 + Width = 24 + Height = 13 + Caption = 'none' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -8 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label1: TLabel + Left = 130 + Top = 7 + Width = 52 + Height = 13 + Caption = 'Frame: Min' + end + object Label3: TLabel + Left = 256 + Top = 7 + Width = 20 + Height = 13 + Caption = 'Max' + end + object Label4: TLabel + Left = 720 + Top = 7 + Width = 29 + Height = 13 + Caption = 'Frame' + end + object Label5: TLabel + Left = 352 + Top = 8 + Width = 31 + Height = 13 + Caption = 'Speed' + end + object MinFrameEditBox: TEdit + Left = 186 + Top = 4 + Width = 60 + Height = 21 + TabOrder = 0 + OnChange = MinFrameEditBoxChange + OnExit = EditBoxExit + end + object MaxFrameEditBox: TEdit + Left = 280 + Top = 4 + Width = 60 + Height = 21 + TabOrder = 1 + OnChange = MaxFrameEditBoxChange + OnExit = EditBoxExit + end + object CyclicCheckBox: TCheckBox + Left = 456 + Top = 7 + Width = 49 + Height = 17 + Caption = 'Cycle' + TabOrder = 2 + OnClick = CyclicCheckBoxClick + end + object CurrentFrameLabel: TEdit + Left = 760 + Top = 4 + Width = 60 + Height = 21 + TabOrder = 3 + end + object holdFrameCheckbox: TCheckBox + Left = 560 + Top = 7 + Width = 57 + Height = 17 + Caption = 'Hold' + TabOrder = 4 + OnClick = holdFrameCheckboxClick + end + object cycleForEditBox: TEdit + Left = 503 + Top = 4 + Width = 39 + Height = 21 + Enabled = False + TabOrder = 5 + Text = '0' + OnChange = cycleForEditBoxChange + OnExit = EditBoxExit + end + object speedEditBox: TEdit + Left = 387 + Top = 4 + Width = 57 + Height = 21 + TabOrder = 6 + OnChange = speedEditBoxChange + OnExit = EditBoxExit + end + end +end diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.h b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.h new file mode 100644 index 0000000..fcc0f0a --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/fcframe.h @@ -0,0 +1,44 @@ +//--------------------------------------------------------------------------- + + +#ifndef fcframeH +#define fcframeH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TFrame1 : public TFrame +{ +__published: // IDE-managed Components + TPanel *Panel1; + TLabel *FrameControllerNameLabel; + TLabel *Label1; + TEdit *MinFrameEditBox; + TLabel *Label3; + TEdit *MaxFrameEditBox; + TCheckBox *CyclicCheckBox; + TLabel *Label4; + TEdit *CurrentFrameLabel; + TCheckBox *holdFrameCheckbox; + TEdit *cycleForEditBox; + TEdit *speedEditBox; + TLabel *Label5; + void __fastcall CyclicCheckBoxClick(TObject *Sender); + void __fastcall MaxFrameEditBoxChange(TObject *Sender); + void __fastcall MinFrameEditBoxChange(TObject *Sender); + void __fastcall holdFrameCheckboxClick(TObject *Sender); + void __fastcall speedEditBoxChange(TObject *Sender); + void __fastcall cycleForEditBoxChange(TObject *Sender); + void __fastcall EditBoxExit(TObject *Sender); +private: // User declarations + int m_FCIndex; +public: // User declarations + __fastcall TFrame1(TComponent* Owner , int fcindex); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TFrame1 *Frame1; +//--------------------------------------------------------------------------- +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.cpp new file mode 100644 index 0000000..1192623 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.cpp @@ -0,0 +1,704 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#include <sp/interface.hpp> +#include <direct.h> + +#include <errno.h> +#include <dos.h> +#include <io.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#pragma hdrstop + +#include "main.h" +#include "sp/builder/fcframe.h" +#include "sp/builder/eventsframe.h" + +float g_ForceDataUpdate = false; +bool g_IsDataSaved = true; + +/* returns the attributes of a DOS file */ +int get_file_attrib(char *filename) +{ + return(_rtl_chmod(filename, 0)); +} +//--------------------------------------------------------------------------- + +void FVUShiftStateToMouse(TShiftState shiftState, int& buttons, int& shift) +{ + buttons = 0; + if (shiftState.Contains(ssLeft)) + buttons |= MK_LBUTTON; + if (shiftState.Contains(ssRight)) + buttons |= MK_RBUTTON; + if (shiftState.Contains(ssMiddle)) + buttons |= MK_MBUTTON; + + shift = 0; + if (shiftState.Contains(ssShift)) + shift |= MK_SHIFT; + if (shiftState.Contains(ssCtrl)) + shift |= MK_CONTROL; +} +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TMainForm *MainForm; +//--------------------------------------------------------------------------- +__fastcall TMainForm::TMainForm(TComponent* Owner) : + TForm(Owner), + m_numFCPanels(0), + m_numDrawablePanels(0), + m_numEvents(0), + m_numCallbacks(0), + m_CurrentPropState(-1) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::ApplicationEvents1Idle(TObject *Sender, + bool &Done) +{ + int i; + SPContextAdvance(); + SPContextDisplay(); + + //update frames + float currentFrame = SPGetBaseFrameControllerFrame(); + AnsiString frame; + frame.sprintf("%0.3f",currentFrame); + CurrentFrameWindow->Text = frame; + + for ( i = 0; i < m_numFCPanels; i++ ) + { + frame.sprintf("%0.3f",SPGetFrameControllerFrame( i )); + m_FCPanels[i]->CurrentFrameLabel->Text = frame; + } + + Save1->Enabled = ! g_IsDataSaved; + + //check for a new state + int newState = SPGetCurrentState(); + if ( m_CurrentPropState != newState || g_ForceDataUpdate ) + { + UpdateStateInfo(); + UpdateFrameControllers(); + UpdateDrawables(); + UpdateEvents(); + UpdateCallbacks(); + m_CurrentPropState = newState; + g_ForceDataUpdate = false; + } + + static bool bgloaded = false; + if ( ! bgloaded ) + { + //load the events list + AnsiString fname = Application->ExeName; + fname.SetLength( fname.Length() - 13 ); + fname.cat_sprintf("data\\init.txt"); + TComboBox* cbox = new TComboBox( this ); + cbox->Parent = Panel4; + cbox->Items->LoadFromFile(fname); + if ( cbox->Items->Count >= 1 ) + { + AnsiString bgfilename = cbox->Items->Strings[0]; + SPLoadBackground( bgfilename.c_str() ); + } + + delete cbox; + bgloaded = true; + } + + Done = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::FormShow(TObject *Sender) +{ + SPPlatformOpen( Handle ); + + HWND desktopHwnd = GetDesktopWindow(); + RECT rect; + GetWindowRect(desktopHwnd, &rect); + + P3DPanel->Width = rect.right - rect.left; + P3DPanel->Height = rect.bottom - rect.top; + SPContextOpen(P3DPanel->Handle); + SPContextViewResize(P3DClientPanel->ClientWidth, P3DClientPanel->ClientHeight); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action) +{ + SPContextClose(); + SPPlatformClose(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::P3DClientPanelResize(TObject *Sender) +{ + SPContextViewResize(P3DClientPanel->ClientWidth, P3DClientPanel->ClientHeight); + SPContextDisplay(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::FileOpenExecute(TObject *Sender) +{ + if (OpenDialog1->Execute()) + { + int i; + SPLoad( OpenDialog1->FileName.c_str() ); + FileName = OpenDialog1->FileName; + m_CurrentPropState = -1; + + //Remove old panels + for (i = 0; i < m_numFCPanels; i++) + { + delete m_FCPanels[i]; + m_FCPanels[i] = NULL; + } + m_numFCPanels = 0; + + for (i = 0; i < m_numDrawablePanels; i++) + { + delete m_DrawablePanels[i]; + m_DrawablePanels[i] = NULL; + } + m_numDrawablePanels = 0; + + //Set up new panels + int numfc = SPGetNumFrameControllers(); + m_numFCPanels = numfc; + for (i = 0; i < numfc; i++ ) + { + AnsiString framename; + framename.sprintf("fcframe%i", i ); + TFrame1* f = new TFrame1( this , i ); + f->Parent = Panel4; + f->Name = framename; + m_FCPanels[i] = f; + } + Panel2->Height = numfc * 33 + 35 + 32; + int panel4height = numfc * 33; + if ( panel4height < 6 * 33 ) + { + Panel4->Height = numfc * 33; + } + else + { + Panel4->Height = 6 * 33; + } + + for (i = numfc - 1; i >= 0; i-- ) + { + m_FCPanels[i]->Align = alTop; + } + + m_numDrawablePanels = SPGetNumDrawables(); + for (i = 0; i < m_numDrawablePanels; i++ ) + { + AnsiString framename; + framename.sprintf("drawframe%i", i ); + TFrame2* f = new TFrame2( this , i ); + f->Parent = Panel5; + f->Name = framename; + m_DrawablePanels[i] = f; + } + for ( i = m_numDrawablePanels-1; i >= 0; i-- ) + { + m_DrawablePanels[i]->Align = alTop; + } + g_IsDataSaved = true; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::P3DPanelMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + int buttons, shift; + FVUShiftStateToMouse(Shift, buttons, shift); + SPContextMouseDown(buttons, shift, X, Y); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::P3DPanelMouseMove(TObject *Sender, + TShiftState Shift, int X, int Y) +{ + int buttons, shift; + FVUShiftStateToMouse(Shift, buttons, shift); + SPContextMouseMove(buttons, shift, X, Y); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::P3DPanelMouseUp(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + int buttons, shift; + FVUShiftStateToMouse(Shift, buttons, shift); + SPContextMouseUp(buttons, shift, X, Y); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::FormKeyPress(TObject *Sender, char &Key) +{ + switch (Key) + { + case '.': + SPNextState(); + g_ForceDataUpdate = true; + break; + case ',': + SPPrevState(); + g_ForceDataUpdate = true; + break; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::PlayButtonClick(TObject *Sender) +{ + static bool play = true; + SPPause( play ); + play = !play; + if (play) + { + PlayButton->Caption = "| |"; + } + else + { + PlayButton->Caption = ">"; + } +} +//--------------------------------------------------------------------------- + + + +void __fastcall TMainForm::PrevStatebuttonClick(TObject *Sender) +{ + SPPrevState(); + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::NextStateButtonClick(TObject *Sender) +{ + SPNextState(); + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::ForwardStepButtonClick(TObject *Sender) +{ + SPAdvanceOneFrame(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::BackStepButtonClick(TObject *Sender) +{ + SPBackOneFrame(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button1Click(TObject *Sender) +{ + SPAddEvent( "" , 0 , 0 , SPGetCurrentState() ); + UpdateEvents(); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void TMainForm::UpdateStateInfo() +{ + AnsiString propname; + propname.sprintf( "%s", SPGetPropName() ); + PropNameLabel->Caption = propname; + PropNameLabelTop->Caption = propname; + + AnsiString numstates; + numstates.sprintf("%i", SPGetNumberOfStates() ); + NumPropStatesLabel->Caption = numstates; + NumPropStatesLabelTop->Caption = numstates; + + AnsiString curstate; + curstate.sprintf("%i" , SPGetCurrentState() + 1 ); + CurrentStateLabel->Caption = curstate; + CurrentStateLabelTop->Caption = curstate; + StateStateLabel->Caption = curstate; + + TransitionData transitionData; + if ( SPGetTransitionData( SPGetCurrentState() , &transitionData ) ) + { + AutoTransitionCheckBox->Checked = transitionData.autoTransition; + + AnsiString tostate; + tostate.sprintf("%i", transitionData.toState + 1); + ToStateEditBox->Text = tostate; + ToStateEditBox->Enabled = transitionData.autoTransition; + + AnsiString onframe; + onframe.sprintf("%0.3f", transitionData.onFrame ); + OnFrameEditBox->Text = onframe; + OnFrameEditBox->Enabled = transitionData.autoTransition; + } +} +//--------------------------------------------------------------------------- + +void TMainForm::UpdateFrameControllers() +{ + //Set up fc's + int i; + for ( i = 0; i < m_numFCPanels; i++ ) + { + AnsiString text; + text.sprintf("%s",SPGetFrameControllerName( i )); + m_FCPanels[i]->FrameControllerNameLabel->Caption = text; + + FrameControllerData fcData; + if ( SPGetFrameControllerData( SPGetCurrentState() , i , &fcData ) ) + { + text.sprintf("%0.3f", fcData.minFrame ); + m_FCPanels[i]->MinFrameEditBox->Text = text; + + text.sprintf("%0.3f",fcData.maxFrame); + m_FCPanels[i]->MaxFrameEditBox->Text = text; + + text.sprintf("%0.3f", fcData.relativeSpeed ); + m_FCPanels[i]->speedEditBox->Text = text; + + if ( fcData.isCyclic ) + { + m_FCPanels[i]->CyclicCheckBox->State = cbChecked; + } + else + { + m_FCPanels[i]->CyclicCheckBox->State = cbUnchecked; + } + m_FCPanels[i]->holdFrameCheckbox->Checked = fcData.holdFrame; + + if ( fcData.numberOfCycles == 0 ) + { + text.sprintf("forever" ); + m_FCPanels[i]->cycleForEditBox->Text = text; + } + else + { + text.sprintf("%i" , fcData.numberOfCycles); + m_FCPanels[i]->cycleForEditBox->Text = text; + } + + m_FCPanels[i]->cycleForEditBox->Enabled = m_FCPanels[i]->CyclicCheckBox->State != cbUnchecked; + } + } +} +//--------------------------------------------------------------------------- + +void TMainForm::UpdateDrawables() +{ + //Set up drawables + int i; + for ( i = 0; i < m_numDrawablePanels; i++ ) + { + AnsiString n; + n.sprintf("%s",SPGetDrawableName( i )); + m_DrawablePanels[i]->NameLabel->Caption = n; + + VisibilityData visData; + if ( SPGetVisibilityData( SPGetCurrentState() , i , &visData ) ) + { + if ( visData.isVisible ) + { + m_DrawablePanels[i]->VisibilityCheckBox->State = cbChecked; + } + else + { + m_DrawablePanels[i]->VisibilityCheckBox->State = cbUnchecked; + } + } + } +} +//--------------------------------------------------------------------------- + +void TMainForm::UpdateEvents() +{ + int i; + for ( i = 0; i < m_numEvents; i++ ) + { + //delete old panels + delete m_EventPanels[i]; + m_EventPanels[i] = NULL; + } + m_numEvents = SPGetNumberOfEvents( SPGetCurrentState() ); + for ( i = 0; i < m_numEvents; i++ ) + { + //create panels + AnsiString framename; + framename.sprintf("eventframe%i", i ); + TFrame3* f = new TFrame3( this , i ); + f->Parent = Panel6; + f->Name = framename; + + //load the events list + AnsiString fname = Application->ExeName; + fname.SetLength( fname.Length() - 13 ); + fname.cat_sprintf("data\\events.txt"); + f->EventComboBox->Items->LoadFromFile(fname); + + //set up events fields + EventData eventData; + if ( SPGetEventData( SPGetCurrentState() , i , &eventData ) ) + { + AnsiString eventname; + eventname.sprintf( eventData.eventName ); + int eventindex = f->EventComboBox->Items->IndexOf( eventname ); + f->EventComboBox->ItemIndex = eventindex; + AnsiString toState; + toState.sprintf("%i", eventData.toState + 1); + f->ToFrameEditBox->Text = toState; + } + + //add panel to panel list + m_EventPanels[i] = f; + } + + for ( i = m_numEvents-1; i >= 0 ; i-- ) + { + m_EventPanels[i]->Align = alTop; + } +} +//--------------------------------------------------------------------------- + +void TMainForm::UpdateCallbacks() +{ + int i; + for ( i = 0; i < m_numCallbacks; i++ ) + { + //delete old panels + delete m_CallbackPanels[i]; + m_CallbackPanels[i] = NULL; + } + m_numCallbacks = SPGetNumberOfCallbacks( SPGetCurrentState() ); + for ( i = 0; i < m_numCallbacks; i++ ) + { + //create panels + AnsiString framename; + framename.sprintf("callbackframe%i", i ); + TFrame4* f = new TFrame4( this , i ); + f->Parent = CallbackPanel; + f->Name = framename; + + //load the callbacks list + AnsiString fname = Application->ExeName; + fname.SetLength( fname.Length() - 13 ); + fname.cat_sprintf("data\\callbacks.txt"); + f->CallbackComboBox->Items->LoadFromFile(fname); + + CallbackData cbData; + if ( SPGetCallbackData( SPGetCurrentState() , i , &cbData ) ) + { + //set up events fields + AnsiString callbackname; + callbackname.sprintf( cbData.callbackName ); + int cbindex = f->CallbackComboBox->Items->IndexOf( callbackname ); + f->CallbackComboBox->ItemIndex = cbindex; + AnsiString onFrame; + onFrame.sprintf("%0.3f", cbData.onFrame ); + f->OnFrameEditBox->Text = onFrame; + } + //add panel to panel list + m_CallbackPanels[i] = f; + } + + for ( i = m_numCallbacks-1; i >= 0 ; i-- ) + { + m_CallbackPanels[i]->Align = alTop; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button2Click(TObject *Sender) +{ + SPAddCallback( SPGetCurrentState() , "" , 0 , 0.f ); + UpdateCallbacks(); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Save1Click(TObject *Sender) +{ + SaveData(); +} +//--------------------------------------------------------------------------- + +void TMainForm::SaveData() +{ + char buf[256]; + memcpy( buf , FileName.c_str() , strlen(FileName.c_str()) - 4 ); + buf[strlen(FileName.c_str()) - 4] = '\0'; + strcat(buf , "data.p3d"); + + int attrib = get_file_attrib( buf ); + + if ( ( attrib & FA_RDONLY ) && ( attrib != -1 ) ) + { + AnsiString out; + out.sprintf( "%s is read-only.\n" , FileName.c_str() ); + if ( Application->MessageBox( out.c_str() , "" , MB_RETRYCANCEL ) == IDRETRY ) + { + SaveData(); + } + } + else + { + SPExportStatePropData( FileName.c_str() ); + g_IsDataSaved = true; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::FileSaveExecute(TObject *Sender) +{ + SaveData(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::AutoTransitionCheckBoxClick(TObject *Sender) +{ + bool autotransition = AutoTransitionCheckBox->State == cbChecked ? true : false; + SPSetAutoTransition( SPGetCurrentState() , autotransition ); + g_ForceDataUpdate = true; + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::ToStateEditBoxChange(TObject *Sender) +{ + AnsiString toState = ToStateEditBox->Text; + int state = 0; + try + { + state = toState.ToInt(); + } + catch (Exception&) + { + TransitionData tranData; + SPGetTransitionData( SPGetCurrentState() , &tranData ); + state = tranData.toState + 1; + } + if ( state > SPGetNumberOfStates() || state <= 0 ) + { + state = 1; + } + SPSetAutoTransitionToState( SPGetCurrentState() , state - 1 ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::OnFrameEditBoxChange(TObject *Sender) +{ + AnsiString toframe = OnFrameEditBox->Text; + float frame = 0; + try + { + frame = toframe.ToDouble(); + } + catch (Exception&) + { + TransitionData tranData; + SPGetTransitionData( SPGetCurrentState() , &tranData ); + frame = tranData.onFrame; + } + + SPSetAutoTransitionOnFrame( SPGetCurrentState() , frame ); + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button4Click(TObject *Sender) +{ + AnsiString caption; + caption.sprintf("Delete State"); + AnsiString out; + out.sprintf( "Delete State: %i\n It won't come back!", SPGetCurrentState() + 1 ); + if ( Application->MessageBox(out.c_str() , caption.c_str() , MB_YESNO) != IDOK ) + { + SPDeleteState( SPGetCurrentState() ); + if ( SPGetCurrentState() - 1 >= 0 ) + { + SPSetState( SPGetCurrentState() - 1 ); + } + g_ForceDataUpdate = true; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button3Click(TObject *Sender) +{ + SPInsertState( SPGetCurrentState() ); + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +void __fastcall TMainForm::Button6Click(TObject *Sender) +{ + SPHideAll( SPGetCurrentState() ); + g_ForceDataUpdate = true; + g_IsDataSaved = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button7Click(TObject *Sender) +{ + SPShowAll( SPGetCurrentState() ); + g_ForceDataUpdate = true; + g_IsDataSaved = false; +} + +//--------------------------------------------------------------------------- +void __fastcall TMainForm::B1Click(TObject *Sender) +{ + if ( ColorDialog1->Execute() ) + { + TColor color = ColorDialog1->Color; + int blue = (int) ((color & 0x00ff0000) >> 16); + int green = (int) ((color & 0x0000ff00) >> 8); + int red = (int) ((color & 0x000000ff)); + SPSetBackgroundColour( red , green , blue ); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::PDDICheckBoxClick(TObject *Sender) +{ + SPContextSetIsPDDIStatsEnabled( PDDICheckBox->Checked ); +} +//--------------------------------------------------------------------------- + + + +void __fastcall TMainForm::ToStateEditBoxExit(TObject *Sender) +{ + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::OnFrameEditBoxExit(TObject *Sender) +{ + g_ForceDataUpdate = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::P3DBackgroundArt1Click(TObject *Sender) +{ + if (OpenDialog1->Execute()) + { + SPLoadBackground( OpenDialog1->FileName.c_str() ); + } +} +//--------------------------------------------------------------------------- + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.dfm b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.dfm new file mode 100644 index 0000000..0b6eee2 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.dfm @@ -0,0 +1,783 @@ +object MainForm: TMainForm + Left = 197 + Top = 118 + Width = 1262 + Height = 869 + Caption = 'State Animation Builder' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Menu = MainMenu1 + OldCreateOrder = False + OnClose = FormClose + OnKeyPress = FormKeyPress + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter2: TSplitter + Left = 0 + Top = 628 + Width = 1254 + Height = 3 + Cursor = crVSplit + Align = alBottom + end + object Splitter1: TSplitter + Left = 230 + Top = 0 + Width = 3 + Height = 628 + Cursor = crHSplit + end + object Panel2: TPanel + Left = 0 + Top = 631 + Width = 1254 + Height = 192 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 1254 + Height = 33 + Align = alTop + BevelInner = bvLowered + TabOrder = 0 + object Label1: TLabel + Left = 2 + Top = 2 + Width = 31 + Height = 29 + Align = alLeft + Caption = ' Prop: ' + end + object PropNameLabel: TLabel + Left = 33 + Top = 2 + Width = 24 + Height = 29 + Align = alLeft + Caption = 'none' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 124 + Top = 2 + Width = 26 + Height = 29 + Align = alLeft + Caption = ' Of: ' + end + object NumPropStatesLabel: TLabel + Left = 150 + Top = 2 + Width = 6 + Height = 29 + Align = alLeft + Caption = '0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label3: TLabel + Left = 57 + Top = 2 + Width = 61 + Height = 29 + Align = alLeft + Caption = ' State: ' + end + object CurrentStateLabel: TLabel + Left = 118 + Top = 2 + Width = 6 + Height = 29 + Align = alLeft + Caption = '0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label4: TLabel + Left = 720 + Top = 7 + Width = 29 + Height = 13 + Caption = 'Frame' + end + object PlayButton: TButton + Left = 560 + Top = 5 + Width = 30 + Height = 20 + Hint = 'Play / Pause' + Caption = '| |' + ParentShowHint = False + ShowHint = True + TabOrder = 0 + OnClick = PlayButtonClick + end + object ForwardStepButton: TButton + Left = 592 + Top = 5 + Width = 30 + Height = 20 + Hint = 'Step Forward One Frame' + Caption = '> |' + ParentShowHint = False + ShowHint = True + TabOrder = 1 + OnClick = ForwardStepButtonClick + end + object BackStepButton: TButton + Left = 528 + Top = 5 + Width = 30 + Height = 20 + Hint = 'Step Back One Frame' + Caption = '| <' + ParentShowHint = False + ShowHint = True + TabOrder = 2 + OnClick = BackStepButtonClick + end + object CurrentFrameWindow: TEdit + Left = 760 + Top = 4 + Width = 60 + Height = 21 + Hint = 'Current Frame, seconds' + ParentShowHint = False + ShowHint = True + TabOrder = 3 + end + object PrevStatebutton: TButton + Left = 495 + Top = 5 + Width = 30 + Height = 20 + Hint = 'Previous State' + Caption = '| <<' + ParentShowHint = False + ShowHint = True + TabOrder = 4 + OnClick = PrevStatebuttonClick + end + object NextStateButton: TButton + Left = 624 + Top = 5 + Width = 30 + Height = 20 + Hint = 'Next State' + Caption = '>> |' + ParentShowHint = False + ShowHint = True + TabOrder = 5 + OnClick = NextStateButtonClick + end + end + object Panel4: TScrollBox + Left = 0 + Top = 33 + Width = 1254 + Height = 159 + Align = alClient + BorderStyle = bsNone + TabOrder = 1 + end + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 230 + Height = 628 + Align = alLeft + BevelOuter = bvNone + TabOrder = 1 + object PageControl1: TPageControl + Left = 0 + Top = 0 + Width = 230 + Height = 628 + ActivePage = TabSheet1 + Align = alClient + MultiLine = True + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Drawables' + object Panel12: TPanel + Left = 0 + Top = 0 + Width = 222 + Height = 41 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Button6: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Hide All' + TabOrder = 0 + OnClick = Button6Click + end + object Button7: TButton + Left = 96 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Show All' + TabOrder = 1 + OnClick = Button7Click + end + end + object Panel5: TScrollBox + Left = 0 + Top = 41 + Width = 222 + Height = 559 + Align = alClient + BorderStyle = bsNone + TabOrder = 1 + end + end + object TabSheet2: TTabSheet + Caption = 'Events' + ImageIndex = 1 + object EventsPanel: TPanel + Left = 0 + Top = 0 + Width = 222 + Height = 41 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Button1: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Add Event' + TabOrder = 0 + OnClick = Button1Click + end + end + object Panel6: TScrollBox + Left = 0 + Top = 41 + Width = 222 + Height = 559 + Align = alClient + BorderStyle = bsNone + TabOrder = 1 + end + end + object TabSheet3: TTabSheet + Caption = 'Callbacks' + ImageIndex = 2 + object Panel7: TPanel + Left = 0 + Top = 0 + Width = 222 + Height = 600 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object Panel8: TPanel + Left = 0 + Top = 0 + Width = 222 + Height = 41 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Button2: TButton + Left = 8 + Top = 8 + Width = 75 + Height = 25 + Caption = 'Add Callback' + TabOrder = 0 + OnClick = Button2Click + end + end + object CallbackPanel: TScrollBox + Left = 0 + Top = 41 + Width = 222 + Height = 559 + Align = alClient + BorderStyle = bsNone + TabOrder = 1 + end + end + end + object TabSheet4: TTabSheet + Caption = 'State' + ImageIndex = 3 + object Panel11: TPanel + Left = 0 + Top = 0 + Width = 222 + Height = 265 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Label10: TLabel + Left = 7 + Top = 10 + Width = 34 + Height = 16 + Caption = 'State:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -15 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object StateStateLabel: TLabel + Left = 42 + Top = 10 + Width = 7 + Height = 16 + Caption = '0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -15 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label6: TLabel + Left = 8 + Top = 130 + Width = 44 + Height = 13 + Caption = 'To State:' + end + object Label8: TLabel + Left = 8 + Top = 154 + Width = 49 + Height = 13 + Caption = 'On Frame:' + end + object AutoTransitionCheckBox: TCheckBox + Left = 8 + Top = 105 + Width = 97 + Height = 17 + Caption = 'Auto Transition' + TabOrder = 0 + OnClick = AutoTransitionCheckBoxClick + end + object ToStateEditBox: TEdit + Left = 64 + Top = 126 + Width = 41 + Height = 21 + TabOrder = 1 + OnChange = ToStateEditBoxChange + OnExit = ToStateEditBoxExit + end + object OnFrameEditBox: TEdit + Left = 64 + Top = 150 + Width = 41 + Height = 21 + TabOrder = 2 + OnChange = OnFrameEditBoxChange + OnExit = OnFrameEditBoxExit + end + object Button4: TButton + Left = 8 + Top = 64 + Width = 75 + Height = 25 + Caption = 'Delete State' + TabOrder = 3 + OnClick = Button4Click + end + object Button3: TButton + Left = 8 + Top = 32 + Width = 75 + Height = 25 + Caption = 'Add State' + TabOrder = 4 + OnClick = Button3Click + end + object PDDICheckBox: TCheckBox + Left = 8 + Top = 184 + Width = 97 + Height = 17 + Caption = 'PDDI Stats' + TabOrder = 5 + OnClick = PDDICheckBoxClick + end + end + end + end + end + object Panel9: TPanel + Left = 233 + Top = 0 + Width = 1021 + Height = 628 + Align = alClient + BevelOuter = bvNone + Caption = 'Panel9' + TabOrder = 2 + object P3DClientPanel: TPanel + Left = 0 + Top = 33 + Width = 1021 + Height = 595 + Align = alClient + BevelInner = bvLowered + Caption = 'P3DClientPanel' + Color = clCaptionText + TabOrder = 0 + OnResize = P3DClientPanelResize + object P3DPanel: TPanel + Left = 2 + Top = 2 + Width = 1065 + Height = 793 + BevelOuter = bvNone + Color = clActiveCaption + TabOrder = 0 + OnMouseDown = P3DPanelMouseDown + OnMouseMove = P3DPanelMouseMove + OnMouseUp = P3DPanelMouseUp + end + end + object Panel10: TPanel + Left = 0 + Top = 0 + Width = 1021 + Height = 33 + Align = alTop + BevelInner = bvLowered + TabOrder = 1 + object Label5: TLabel + Left = 10 + Top = 7 + Width = 41 + Height = 20 + Caption = 'Prop: ' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object PropNameLabelTop: TLabel + Left = 56 + Top = 7 + Width = 36 + Height = 20 + Caption = 'none' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object NumPropStatesLabelTop: TLabel + Left = 309 + Top = 7 + Width = 9 + Height = 20 + Caption = '0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label9: TLabel + Left = 210 + Top = 7 + Width = 43 + Height = 20 + Caption = 'State:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object CurrentStateLabelTop: TLabel + Left = 256 + Top = 7 + Width = 9 + Height = 20 + Caption = '0' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Label7: TLabel + Left = 286 + Top = 7 + Width = 21 + Height = 20 + Caption = 'Of:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + end + end + object ApplicationEvents1: TApplicationEvents + OnIdle = ApplicationEvents1Idle + Left = 1040 + Top = 72 + end + object MainMenu1: TMainMenu + Images = ImageList1 + Left = 1072 + Top = 72 + object N1: TMenuItem + Caption = '&File' + object Open1: TMenuItem + Action = FileOpen + end + object Save1: TMenuItem + Action = FileSave + end + object Exit1: TMenuItem + Action = FileExit + end + end + object Edit1: TMenuItem + Caption = '&Edit' + object B1: TMenuItem + Caption = '&Background Color' + OnClick = B1Click + end + object P3DBackgroundArt1: TMenuItem + Caption = '&P3D Background Art' + OnClick = P3DBackgroundArt1Click + end + end + object Help1: TMenuItem + Caption = '&Help' + object About1: TMenuItem + Action = HelpAbout + end + end + end + object ActionList1: TActionList + Left = 1136 + Top = 72 + object FileOpen: TAction + Category = 'File' + Caption = '&Open' + Hint = 'Open File' + ImageIndex = 0 + OnExecute = FileOpenExecute + end + object FileSave: TAction + Category = 'File' + Caption = '&Save' + Hint = 'Save File' + ImageIndex = 1 + OnExecute = FileSaveExecute + end + object FileExit: TAction + Category = 'File' + Caption = '&Exit' + Hint = 'Exit Application' + end + object HelpAbout: TAction + Category = 'Help' + Caption = '&About' + end + end + object ImageList1: TImageList + Left = 1104 + Top = 72 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000084 + 8400008484000084840000848400008484000084840000848400008484000000 + 0000000000000000000000000000000000000000000000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00000000000084 + 8400008484000084840000848400008484000084840000848400008484000084 + 8400000000000000000000000000000000000000000000000000008484000084 + 8400000000000000000000000000000000000000000000000000C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF0000FFFF000000 + 0000008484000084840000848400008484000084840000848400008484000084 + 8400008484000000000000000000000000000000000000000000008484000084 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF + FF00000000000084840000848400008484000084840000848400008484000084 + 8400008484000084840000000000000000000000000000000000008484000084 + 8400008484000084840000848400008484000084840000848400008484000084 + 8400008484000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF0000FFFF00FFFF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000084 + 8400000000000000000000000000000000000000000000000000000000000000 + 0000008484000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF + FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF0000FFFF00FFFF + FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00FFFFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000084840000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C600000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000008484000000 + 0000C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 + C60000000000C6C6C60000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFC00100000000 + 001F800100000000000F80010000000000078001000000000003800100000000 + 00018001000000000000800100000000001F800100000000001F800100000000 + 001F8001000000008FF1800100000000FFF9800100000000FF75800100000000 + FF8F800100000000FFFFFFFF0000000000000000000000000000000000000000 + 000000000000} + end + object OpenDialog1: TOpenDialog + DefaultExt = 'p3d' + Filter = 'P3D|*.p3d|All files|*.*' + Title = 'Open File' + Left = 1042 + Top = 112 + end + object ColorDialog1: TColorDialog + Ctl3D = True + Left = 1075 + Top = 115 + end +end diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.h b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.h new file mode 100644 index 0000000..23fc13d --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/main.h @@ -0,0 +1,163 @@ +//--------------------------------------------------------------------------- + +#ifndef mainH +#define mainH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <AppEvnts.hpp> +#include <ExtCtrls.hpp> +#include <ComCtrls.hpp> +#include <Menus.hpp> +#include <ActnList.hpp> +#include <ImgList.hpp> +#include <Dialogs.hpp> +#include <CheckLst.hpp> +#include "fcframe.h" +#include "visframe.h" +#include "eventsframe.h" +#include "callbacksframe.h" + +//--------------------------------------------------------------------------- +class TMainForm : public TForm +{ +__published: // IDE-managed Components + TApplicationEvents *ApplicationEvents1; + TSplitter *Splitter2; + TPanel *Panel2; + TPanel *Panel1; + TSplitter *Splitter1; + TMainMenu *MainMenu1; + TMenuItem *N1; + TMenuItem *Open1; + TMenuItem *Save1; + TActionList *ActionList1; + TImageList *ImageList1; + TAction *FileOpen; + TAction *FileSave; + TAction *FileExit; + TAction *HelpAbout; + TMenuItem *Exit1; + TMenuItem *Edit1; + TMenuItem *Help1; + TMenuItem *About1; + TOpenDialog *OpenDialog1; + TPanel *Panel3; + TLabel *Label1; + TLabel *PropNameLabel; + TLabel *Label2; + TLabel *NumPropStatesLabel; + TLabel *Label3; + TLabel *CurrentStateLabel; + TButton *PlayButton; + TButton *ForwardStepButton; + TButton *BackStepButton; + TEdit *CurrentFrameWindow; + TButton *PrevStatebutton; + TButton *NextStateButton; + TLabel *Label4; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TTabSheet *TabSheet2; + TTabSheet *TabSheet3; + TPanel *EventsPanel; + TButton *Button1; + TPanel *Panel7; + TPanel *Panel8; + TButton *Button2; + TPanel *Panel9; + TPanel *P3DClientPanel; + TPanel *P3DPanel; + TPanel *Panel10; + TLabel *Label5; + TLabel *PropNameLabelTop; + TLabel *NumPropStatesLabelTop; + TLabel *Label9; + TLabel *CurrentStateLabelTop; + TTabSheet *TabSheet4; + TPanel *Panel11; + TLabel *Label10; + TLabel *StateStateLabel; + TCheckBox *AutoTransitionCheckBox; + TLabel *Label6; + TEdit *ToStateEditBox; + TLabel *Label8; + TEdit *OnFrameEditBox; + TButton *Button4; + TButton *Button3; + TLabel *Label7; + TPanel *Panel12; + TButton *Button6; + TButton *Button7; + TScrollBox *Panel5; + TScrollBox *Panel6; + TScrollBox *CallbackPanel; + TScrollBox *Panel4; + TMenuItem *B1; + TColorDialog *ColorDialog1; + TCheckBox *PDDICheckBox; + TMenuItem *P3DBackgroundArt1; + void __fastcall ApplicationEvents1Idle(TObject *Sender, + bool &Done); + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall P3DClientPanelResize(TObject *Sender); + void __fastcall FileOpenExecute(TObject *Sender); + void __fastcall P3DPanelMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall P3DPanelMouseMove(TObject *Sender, + TShiftState Shift, int X, int Y); + void __fastcall P3DPanelMouseUp(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormKeyPress(TObject *Sender, char &Key); + void __fastcall PlayButtonClick(TObject *Sender); + void __fastcall PrevStatebuttonClick(TObject *Sender); + void __fastcall NextStateButtonClick(TObject *Sender); + void __fastcall ForwardStepButtonClick(TObject *Sender); + void __fastcall BackStepButtonClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall Save1Click(TObject *Sender); + void __fastcall FileSaveExecute(TObject *Sender); + void __fastcall AutoTransitionCheckBoxClick(TObject *Sender); + void __fastcall ToStateEditBoxChange(TObject *Sender); + void __fastcall OnFrameEditBoxChange(TObject *Sender); + void __fastcall Button4Click(TObject *Sender); + void __fastcall Button3Click(TObject *Sender); + void __fastcall Button6Click(TObject *Sender); + void __fastcall Button7Click(TObject *Sender); + void __fastcall B1Click(TObject *Sender); + void __fastcall PDDICheckBoxClick(TObject *Sender); + void __fastcall ToStateEditBoxExit(TObject *Sender); + void __fastcall OnFrameEditBoxExit(TObject *Sender); + void __fastcall P3DBackgroundArt1Click(TObject *Sender); +private: // User declarations + int m_CurrentPropState; + int m_numFCPanels; + TFrame1* m_FCPanels[250]; + int m_numDrawablePanels; + TFrame2* m_DrawablePanels[250]; + int m_numEvents; + TFrame3* m_EventPanels[250]; + int m_numCallbacks; + TFrame4* m_CallbackPanels[250]; + int m_numForces; + + void UpdateStateInfo(); + void UpdateFrameControllers(); + void UpdateDrawables(); + void UpdateEvents(); + void UpdateCallbacks(); + void SaveData(); + +public: // User declarations + __fastcall TMainForm(TComponent* Owner); + + AnsiString FileName; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TMainForm *MainForm; +//--------------------------------------------------------------------------- +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.cpp new file mode 100644 index 0000000..66f224e --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#include <sp/interface.hpp> +#pragma hdrstop + +#include "visframe.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TFrame2 *Frame2; +//--------------------------------------------------------------------------- +__fastcall TFrame2::TFrame2(TComponent* Owner , int dindex ) + : TFrame(Owner), + m_DrawableIndex( dindex ) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TFrame2::VisibilityCheckBoxClick(TObject *Sender) +{ + SPSetVisible( SPGetCurrentState() , m_DrawableIndex , this->VisibilityCheckBox->State != cbUnchecked ); +} +//--------------------------------------------------------------------------- + diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.dfm b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.dfm new file mode 100644 index 0000000..c9010d2 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.dfm @@ -0,0 +1,42 @@ +object Frame2: TFrame2 + Left = 0 + Top = 0 + Width = 152 + Height = 43 + TabOrder = 0 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 152 + Height = 43 + Align = alClient + BevelInner = bvLowered + TabOrder = 0 + object NameLabel: TLabel + Left = 8 + Top = 5 + Width = 26 + Height = 13 + Caption = 'name' + Color = clSilver + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentColor = False + ParentFont = False + end + object VisibilityCheckBox: TCheckBox + Left = 8 + Top = 21 + Width = 97 + Height = 17 + Caption = 'Visible' + ParentShowHint = False + ShowHint = False + TabOrder = 0 + OnClick = VisibilityCheckBoxClick + end + end +end diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.h b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.h new file mode 100644 index 0000000..aacf3da --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/builder/visframe.h @@ -0,0 +1,28 @@ +//--------------------------------------------------------------------------- + + +#ifndef visframeH +#define visframeH +//--------------------------------------------------------------------------- +#include <Classes.hpp> +#include <Controls.hpp> +#include <StdCtrls.hpp> +#include <Forms.hpp> +#include <ExtCtrls.hpp> +//--------------------------------------------------------------------------- +class TFrame2 : public TFrame +{ +__published: // IDE-managed Components + TPanel *Panel1; + TCheckBox *VisibilityCheckBox; + TLabel *NameLabel; + void __fastcall VisibilityCheckBoxClick(TObject *Sender); +private: // User declarations + int m_DrawableIndex; +public: // User declarations + __fastcall TFrame2(TComponent* Owner , int dindex ); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TFrame2 *Frame2; +//--------------------------------------------------------------------------- +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.cpp new file mode 100644 index 0000000..2c10a5b --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.cpp @@ -0,0 +1,59 @@ + + +#include "aicollisionsolveragent.hpp" +#include "simcollision/collisionanalyserdata.hpp" + +AICollisionSolverAgent::AICollisionSolverAgent() +{ + EnableCollisionAnalyser(); +} + +AICollisionSolverAgent::~AICollisionSolverAgent() +{ + DisableCollisionAnalyser(); +} + + +// ======================================================= +// PRE_COLLISION_EVENT +// +sim::Solving_Answer AICollisionSolverAgent::PreCollisionEvent(sim::Collision& inCollision, int inPass) +{ + return sim::Solving_Continue; +} + + +// ======================================================= +// COLLISION_EVENT +// +sim::Solving_Answer AICollisionSolverAgent::CollisionEvent( + sim::SimState* inSimStateA, int indexA, + sim::SimState* inSimStateB, int indexB, + const rmt::Vector& inPos, float inDvN, float inDvT) +{ + + return sim::Solving_Continue; +} + + +// ======================================================= +// TEST_IMPULSE +// +sim::Solving_Answer AICollisionSolverAgent::TestImpulse(rmt::Vector& mImpulse, + sim::Collision& inCollision) +{ + sim::SimState* inSimStateA = inCollision.mCollisionObjectA->GetSimState(); + sim::SimState* inSimStateB = inCollision.mCollisionObjectB->GetSimState(); + + return sim::Solving_Continue; +} + +// ======================================================= +// END_OBJECT_COLLISION +// +sim::Solving_Answer AICollisionSolverAgent::EndObjectCollision( + sim::SimState* inSimState, + int inIndex) +{ + return sim::Solving_Continue; +}
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.hpp new file mode 100644 index 0000000..10097a8 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/aicollisionsolveragent.hpp @@ -0,0 +1,43 @@ +#ifndef _AICOLLISIONSOLVERAGENT_HPP_ +#define _AICOLLISIONSOLVERAGENT_HPP_ + +#include "simcommon/tlist.hpp" +#include "simcollision/impulsebasedcollisionsolver.hpp" +#include "simcollision/collisionanalyser.hpp" +#include "simcollision/collisionanalyserdata.hpp" + +class AICollisionSolverAgent +: public sim::CollisionSolverAgent +{ +public: + AICollisionSolverAgent(); + ~AICollisionSolverAgent(); + + // + // this method is called at the beginning before anything is done with the collision + // returning Solving_Aborted would cause the collision to be ignored. + // + sim::Solving_Answer PreCollisionEvent(sim::Collision& inCollision, int inPass); + + // + // this method allows to trigger sounds, animation and modify the objects state. + // + sim::Solving_Answer CollisionEvent( sim::SimState* inSimStateA, int indexA, + sim::SimState* inSimStateB, int indexB, + const rmt::Vector& inPos, float inDvN, float inDvT); + + // + // this is called everytime an impulse is computed, before it gets added to the objects + // + sim::Solving_Answer TestImpulse(rmt::Vector& mImpulse, sim::Collision& inCollision); + + // + // the impulse has been added to the object's cache, testing that cache tells + // the consequence of adding the cache to the object's state. It is also a good + // time for adding the cache of the root node of an articulated object to its + // virtual center of mass. + // + sim::Solving_Answer EndObjectCollision(sim::SimState* inSimState, int inIndex); +}; + +#endif
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.cpp new file mode 100644 index 0000000..f994e0d --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.cpp @@ -0,0 +1,792 @@ +/* + * sp/engine/context.cpp + */ + + +#include <SP/engine/workspace.hpp> +#include <SP/engine/context.hpp> +#include <SP/interface/context.hpp> + + +//#include <SP/engine/project.hpp> +//#include <choreo/load.hpp> + +#include <p3d/context.hpp> +#include <p3d/utility.hpp> +#include <p3d/view.hpp> +#include <p3d/directionallight.hpp> +#include <p3d/pointcamera.hpp> +#include <p3d/geometry.hpp> +#include <p3d/anim/drawablepose.hpp> +#include <radload/radload.hpp> + +#include <radtime.hpp> +#include <radplatform.hpp> + +#include <shlwapi.h> + +#include <typeinfo> + + +#ifdef RAD_DEBUG +static const char* pddiDLL = "pddidx8d.dll"; +#endif + +#ifdef RAD_TUNE +static const char* pddiDLL = "pddidx8t.dll"; +#endif + +#ifdef RAD_RELEASE +static const char* pddiDLL = "pddidx8r.dll"; +#endif + + +// global SPContext reference +SPContext* g_SPContext = 0; + +extern Workspace* g_Workspace; + + +//--------------------------------------------------------------------------- +// class SPContext - implementation +//--------------------------------------------------------------------------- + +SPContext::SPContext(HWND hwnd): + m_HWnd(hwnd), + + m_Context(0), + m_View(0), + m_Camera(0), + m_Light(0), + m_Shader(0), + + m_CurrentTime(-1.0f), + m_FPSIndex(0), + m_SimRate(1.0f), + + m_MouseCapture(0), + m_MouseX(0), + m_MouseY(0), + + m_IsCameraLocked(false) +{ + memset(m_FPS, 0, sizeof(m_FPS)); +} + +SPContext::~SPContext() +{ + tRefCounted::Release(m_Shader); + tRefCounted::Release(m_Light); + tRefCounted::Release(m_Camera); + tRefCounted::Release(m_View); +} + +bool SPContext::Open() +{ + // p3d context init + RECT wndRect; + GetWindowRect(m_HWnd, &wndRect); + + tContextInitData init; + init.hwnd = m_HWnd; + init.displayMode = PDDI_DISPLAY_WINDOW; + init.bufferMask = PDDI_BUFFER_COLOUR | PDDI_BUFFER_DEPTH; + int wndWidth = wndRect.right - wndRect.left; + int wndHeight = wndRect.bottom - wndRect.top; + init.xsize = wndWidth; + init.ysize = wndHeight; + init.bpp = 32; + strcpy(init.PDDIlib, pddiDLL); + + //p3d::platform->SetActiveContext(0); + m_Context = p3d::platform->CreateContext(&init); + if (m_Context == 0) + return false; + + p3d::platform->SetActiveContext(m_Context); + + // Call into PDDI to enable Z-buffering. + p3d::pddi->EnableZBuffer(true); + + + radLoadInitialize(); + + // This call installs chunk handlers for all the primary chunk types that + // Pure3D supports. This includes textures, materials, geometries, and the + // like. + p3d::InstallDefaultLoaders(); + + // install default choreo loaders + //choreo::InstallDefaultLoaders(); + + // p3d view init + m_View = new tView; + m_View->AddRef(); + + m_View->SetBackgroundColour(tColour(64, 64, 128)); + m_View->SetAmbientLight(tColour(40, 40, 40)); + + // p3d light init + m_Light = new tDirectionalLight; + m_Light->AddRef(); + + m_Light->SetDirection(0.0f, 0.0f, 1.0f); + m_Light->SetColour(tColour(255, 255, 255)); + m_View->AddLight(m_Light); + + // p3d camera init + m_Camera = new tPointCamera; + m_Camera->AddRef(); + m_Camera->SetNearPlane(0.01f); + m_Camera->SetFarPlane(5000.0f); + m_Camera->SetFOV(rmt::DegToRadian(90.0f), (float)wndWidth / (float)wndHeight); + m_View->SetCamera(m_Camera); + + m_CameraTarget.Clear(); + m_CameraRotateX = rmt::DegToRadian(-45.0f); + m_CameraRotateY = 0.0f; + m_CameraDistance = 5.0f; + + // pddi shader + m_Shader = p3d::device->NewShader("simple"); + m_Shader->AddRef(); + m_Shader->SetInt(PDDI_SP_ISLIT, 0); + + // workspace create + if (g_Workspace == 0) + { + g_Workspace = new Workspace; + g_Workspace->AddRef(); + } + + return true; +} + +bool SPContext::Close() +{ + // p3d release stuff + tRefCounted::Release(m_Shader); + tRefCounted::Release(m_Light); + tRefCounted::Release(m_Camera); + tRefCounted::Release(m_View); + + // p3d context destroy + if (m_Context != 0) + { + p3d::platform->DestroyContext(m_Context); + m_Context = 0; + } + + radLoadTerminate(); + + return true; +} + +bool SPContext::ViewResize(int w, int h) +{ + if (w <= 0) + w = 1; + if (h <= 0) + h = 1; + + RECT wndRect; + GetWindowRect(m_HWnd, &wndRect); + int wndWidth = wndRect.right - wndRect.left; + if (wndWidth <= 0) + wndWidth = 1; + int wndHeight = wndRect.bottom - wndRect.top; + if (wndHeight <= 0) + wndHeight = 1; + + if (w > wndWidth) + w = wndWidth; + if (h > wndHeight) + h = wndHeight; + + m_View->SetWindow(0.0f, 0.0f, (float)w / (float)wndWidth, (float)h / (float)wndHeight); + m_Camera->SetFOV(rmt::DegToRadian(90.0f), (float)w / (float)h); + + return true; +} + +bool SPContext::Advance() +{ + // do time + float deltaTime; + { + float newTime = (float)radTimeGetMilliseconds() / 1000.0f; + + if (m_CurrentTime < 0.0f) + { + deltaTime = 0.0f; + m_CurrentTime = newTime; + } + else + { + deltaTime = newTime - m_CurrentTime; + + if (deltaTime < 0.0f) + { + deltaTime = 0.0f; + } + else + { + m_CurrentTime = newTime; + } + + // for debugging + if (deltaTime > 1.0f) + { + deltaTime = 1.0f / 60.0f; + } + else + { + // do fps + m_FPS[m_FPSIndex] = deltaTime; + m_FPSIndex = (m_FPSIndex + 1) % MAX_FPS_COUNT; + } + } + } + + float simDeltaTime = m_SimRate * deltaTime; + if ( g_Workspace ) + { + g_Workspace->Advance(simDeltaTime * 1000.0f); + } + + // update camera & light + { + /*if (m_IsCameraLocked) + { + rmt::Vector desiredTarget = m_CVPuppet->GetCameraTarget(); + + rmt::Vector delta = desiredTarget; + delta.Sub(m_CameraTarget); + float mag = delta.NormalizeSafe(); + + static const float cameraSpeed = 1.5f; // m/s + float maxMag = cameraSpeed * deltaTime * mag; + if (mag > maxMag) + { + mag = maxMag; + } + + delta.Scale(mag); + m_CameraTarget.Add(delta); + m_CameraTarget.x = desiredTarget.x; + m_CameraTarget.z = desiredTarget.z; + }*/ + + m_Camera->SetTarget(m_CameraTarget); + rmt::Matrix mY; + mY.FillRotateY(m_CameraRotateY); + rmt::Matrix mX; + mX.FillRotateX(m_CameraRotateX); + rmt::Vector cameraPos(0.0f, 0.0f, m_CameraDistance); + cameraPos.Rotate(mX); + cameraPos.Rotate(mY); + cameraPos.Add(m_CameraTarget); + m_Camera->SetPosition(cameraPos); + + rmt::Vector lightDir; + lightDir = m_CameraTarget; + lightDir.Sub(cameraPos); + m_Light->SetDirection(lightDir); + } + + //return rc; + return true; +} + +bool SPContext::Display() +{ + m_Context->BeginFrame(); + m_View->BeginRender(); + + // render game context + if ( g_Workspace ) + { + g_Workspace->Display(m_Context); + } + + // draw origin + { + rmt::Matrix m; + m.Identity(); + DrawAxes(m, 0.5f); + } + + m_View->EndRender(); + m_Context->EndFrame(); + + //return rc; + return true; +} + +void SPContext::DrawAxes(const rmt::Matrix& m, float radius) +{ + rmt::Vector oldVtx[4] = + { + rmt::Vector(0,0,0), + rmt::Vector(radius,0,0), + rmt::Vector(0,radius,0), + rmt::Vector(0,0,radius) + }; + rmt::Vector newVtx[4]; + m.Transform(4, oldVtx, newVtx); + + pddiPrimStream* stream = p3d::pddi->BeginPrims(m_Shader, PDDI_PRIM_LINES, PDDI_V_C , 6); + + stream->Vertex((pddiVector*)newVtx, pddiColour(255,0,0)); + stream->Vertex((pddiVector*)(newVtx + 1), pddiColour(255,0,0)); + + stream->Vertex((pddiVector*)newVtx, pddiColour(0,255,0)); + stream->Vertex((pddiVector*)(newVtx + 2), pddiColour(0,255,0)); + + stream->Vertex((pddiVector*)newVtx, pddiColour(0,0,255)); + stream->Vertex((pddiVector*)(newVtx + 3), pddiColour(0,0,255)); + + p3d::pddi->EndPrims(stream); +} + +void SPContext::DrawLine(const rmt::Vector& a, const rmt::Vector& b, tColour c) +{ + pddiPrimStream* stream = p3d::pddi->BeginPrims(m_Shader, PDDI_PRIM_LINES, PDDI_V_C , 2 ); + stream->Vertex((pddiVector*)(&a), c); + stream->Vertex((pddiVector*)(&b), c); + p3d::pddi->EndPrims(stream); +} + +void SPContext::RenderPose(tPose* pose) +{ + pose->Evaluate(); + + int i; + int startJoint = 0; + for (i = startJoint; i < pose->GetNumJoint(); ++i) + { + tPose::Joint* joint = pose->GetJoint(i); + tPose::Joint* parent = joint->parent; + + if (parent != 0) + { + DrawLine(parent->worldMatrix.Row(3), joint->worldMatrix.Row(3), tColour(255,255,255)); + DrawAxes(parent->worldMatrix, 0.02f); + } + } +} + +void SPContext::MouseDown(int button, int shift, int x, int y) +{ + if (m_MouseCapture == 0) + { + SetCapture(m_HWnd); + m_MouseCapture = 1; + } + + m_MouseX = x; + m_MouseY = y; +} + +void SPContext::MouseMove(int button, int shift, int x, int y) +{ + if (m_MouseCapture == 0) + return; + if (GetCapture() != m_HWnd) + return; + + int dx = x - m_MouseX; + int dy = y - m_MouseY; + m_MouseX = x; + m_MouseY = y; + + if ((button & MK_LBUTTON) != 0) + { + if ((button & MK_MBUTTON) != 0) + { + CameraZoom(dx * 10); + } + else + { + CameraRotate(dx, dy); + } + } + else if ((button & MK_MBUTTON) != 0) + { + CameraPan(dx, dy); + } +} + +void SPContext::MouseUp(int button, int shift, int x, int y) +{ + MouseMove(button, shift, x, y); + + if (m_MouseCapture == 0) + return; + + ReleaseCapture(); + m_MouseCapture = 0; +} + +void SPContext::MouseWheel(int scroll) +{ + CameraZoom(scroll); +} + +void SPContext::CameraPan(int dx, int dy) +{ + RECT wndRect; + GetWindowRect(m_HWnd, &wndRect); + + rmt::Vector v((float)-dx / (float)(wndRect.right - wndRect.left), + (float)dy / (float)(wndRect.bottom - wndRect.top), 0.0f); + rmt::Vector a, b; + m_Camera->ViewToWorld(v, &a, &b); + b.Sub(a); + b.NormalizeSafe(); + b.Scale(m_CameraDistance - m_Camera->GetNearPlane()); + b.Add(a); + m_CameraTarget = b; +} + +void SPContext::CameraZoom(int dz) +{ + m_CameraDistance += ((float)-dz * 0.001f * m_CameraDistance); + + if (m_CameraDistance < 0.1f) + { + m_CameraDistance = 0.1f; + } +} + +void SPContext::CameraRotate(int dx, int dy) +{ + m_CameraRotateX += ((float)-dy * 0.01f); + + if (m_CameraRotateX > rmt::DegToRadian(89.9f)) + { + m_CameraRotateX = rmt::DegToRadian(89.9f); + } + + if (m_CameraRotateX < rmt::DegToRadian(-89.9f)) + { + m_CameraRotateX = rmt::DegToRadian(-89.9f); + } + + m_CameraRotateY += ((float)dx * 0.01f); +} + +float SPContext::SimulationGetFPS() const +{ + float fps = 0.0f; + + for (int i = 0; i < MAX_FPS_COUNT; ++i) + { + fps += m_FPS[i]; + } + + fps /= (float)MAX_FPS_COUNT; + + if (!rmt::Epsilon(fps, 0.0f)) + { + fps = 1.0f / fps; + } + + return fps; +} + +void SPContext::SimulationSetRate(float simRate) +{ + m_SimRate = simRate; + + if (m_SimRate < 0.0f) + { + m_SimRate = 0.0f; + } +} + +bool SPContext::GetEntityName(tEntity* entity, char* name, int maxLen) +{ + if (maxLen > 0) + { + name[0] = 0; + } + + if (entity == 0) + return false; + + if (entity->GetName() != 0) + { + _snprintf(name, maxLen, "%s", entity->GetName()); + } + else + { + _snprintf(name, maxLen, "0x%016I64x", entity->GetUID()); + } + + if (maxLen > 0) + { + name[maxLen - 1] = 0; + } + + return true; +} + +void SPContext::InventoryClear() +{ + if (m_Context != 0) + { + m_Context->GetInventory()->RemoveAllElements(); + } +} + +int SPContext::InventoryGetEntityCount() const +{ + if (m_Context == 0) + return 0; + + int entityCount = 0; + /* + for (int s = 0; s < m_Context->GetInventory()->GetSectionCount(); ++s) + { + entityCount += m_Context->GetInventory()->GetSectionByIndex(s)->GetElementCount(); + } + */ + + return entityCount; +} + +bool SPContext::InventoryGetEntityName(int index, + char* name, int nameLen, + char* type, int typeLen) const +{ + int entityCount = 0; + + /* + for (int s = 0; s < m_Context->GetInventory()->GetSectionCount(); ++s) + { + tEntityTable::RawIterator itor(m_Context->GetInventory()->GetSectionByIndex(s)); + + tEntity* obj = itor.First(); + while (obj) + { + if (entityCount == index) + { + GetEntityName(obj, name, nameLen); + _snprintf(type, typeLen, "%s", typeid(*obj).name()); + type[typeLen - 1] = '\0'; + + return true; + } + + ++entityCount; + obj = itor.Next(); + } + } + */ + + return false; +} + +void SPContext::SetBackgroundColour(int r , int g , int b ) +{ + m_View->SetBackgroundColour( tColour( r , g , b ) ); +} + + +//--------------------------------------------------------------------------- +// SPContext - DLL interface +//--------------------------------------------------------------------------- + +int SP_CALLCONV SPContextOpen(HWND hwnd) +{ + P3DASSERT(g_SPContext == 0); + if (g_SPContext != 0) + return -1; + + g_SPContext = new SPContext(hwnd); + if (!g_SPContext->Open()) + { + delete g_SPContext; + g_SPContext = 0; + return -1; + } + + return 1; +} + +int SP_CALLCONV SPContextClose() +{ + if (g_SPContext == 0) + return 0; + + if (!g_SPContext->Close()) + { + delete g_SPContext; + g_SPContext = 0; + return -1; + } + + delete g_SPContext; + g_SPContext = 0; + return 1; +} + +int SP_CALLCONV SPContextViewResize(int w, int h) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->ViewResize(w, h); + return 1; +} + +int SP_CALLCONV SPContextIsPDDIStatsEnabled() +{ + if (p3d::pddi == 0) + return -1; + return p3d::pddi->IsStatsOverlayEnabled(); +} + +int SP_CALLCONV SPContextSetIsPDDIStatsEnabled(int statsEnabled) +{ + if (p3d::pddi == 0) + return -1; + p3d::pddi->EnableStatsOverlay(statsEnabled != 0); + return 1; +} + +int SP_CALLCONV SPContextAdvance() +{ + if (g_SPContext == 0) + return -1; + + return g_SPContext->Advance(); +} + +int SP_CALLCONV SPContextDisplay() +{ + if (g_SPContext == 0) + return -1; + + return g_SPContext->Display(); +} + +int SP_CALLCONV SPContextMouseDown(int button, int shift, int x, int y) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->MouseDown(button, shift, x, y); + return 0; +} + +int SP_CALLCONV SPContextMouseMove(int button, int shift, int x, int y) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->MouseMove(button, shift, x, y); + return 0; +} + +int SP_CALLCONV SPContextMouseUp(int button, int shift, int x, int y) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->MouseUp(button, shift, x, y); + return 0; +} + +int SP_CALLCONV SPContextMouseWheel(int scroll) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->MouseWheel(scroll); + return 0; +} + +float SP_CALLCONV SPSimulationGetFPS() +{ + if (g_SPContext == 0) + return 0.0f; + + return g_SPContext->SimulationGetFPS(); +} + +float SP_CALLCONV SPSimulationGetRate() +{ + if (g_SPContext == 0) + return 0.0f; + + return g_SPContext->SimulationGetRate(); +} + +int SP_CALLCONV SPSimulationSetRate(float rate) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->SimulationSetRate(rate); + return 0; +} + +int SP_CALLCONV SPContextGetCameraLock() +{ + if (g_SPContext == 0) + return -1; + + return g_SPContext->IsCameraLocked(); +} + +int SP_CALLCONV SPContextSetCameraLock(int cameraLock) +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->SetIsCameraLocked(cameraLock != 0); + return 0; +} + +int SP_CALLCONV SPInventoryClear() +{ + if (g_SPContext == 0) + return -1; + + g_SPContext->InventoryClear(); + return 0; +} + +int SP_CALLCONV SPInventoryGetEntityCount() +{ + if (g_SPContext == 0) + return -1; + + return g_SPContext->InventoryGetEntityCount(); +} + +int SP_CALLCONV SPInventoryGetEntityName(int index, char* name, int nameLen, char* type, int typeLen) +{ + if (g_SPContext == 0) + return -1; + + if (!g_SPContext->InventoryGetEntityName(index, name, nameLen, type, typeLen)) + { + return -1; + } + + return 0; +} + +int SP_CALLCONV SPSetBackgroundColour( int r , int g , int b ) +{ + if (g_SPContext == 0) + return 0; + + g_SPContext->SetBackgroundColour( r , g , b ); + return 1; +} + +// End of file. diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.hpp new file mode 100644 index 0000000..faf88c0 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/context.hpp @@ -0,0 +1,119 @@ +/* + * sp/engine/context.hpp + */ + + +#ifndef SP_ENGINE_CONTEXT_HPP +#define SP_ENGINE_CONTEXT_HPP + + +#define WIN32_LEAN_AND_MEAN +#define WIN32_EXTRA_LEAN +#include <windows.h> + +#include <radmath/radmath.hpp> +#include <p3d/p3dtypes.hpp> + + +class tEntity; +class tContext; +class tView; +class tPointCamera; +class tDirectionalLight; +class tPose; +class pddiShader; + + +//--------------------------------------------------------------------------- +// class SPContext +//--------------------------------------------------------------------------- + +class SPContext +{ +public: + + enum + { + MAX_FPS_COUNT = 10 + }; + + SPContext(HWND hwnd); + virtual ~SPContext(); + + tContext* GetContext() + { return m_Context; } + + bool Open(); + bool Close(); + + bool ViewResize(int w, int h); + + bool Advance(); + bool Display(); + + void MouseDown(int button, int shift, int x, int y); + void MouseMove(int button, int shift, int x, int y); + void MouseUp(int button, int shift, int x, int y); + void MouseWheel(int scroll); + + float SimulationGetFPS() const; + float SimulationGetRate() const + { return m_SimRate; } + void SimulationSetRate(float simRate); + + bool IsCameraLocked() const + { return m_IsCameraLocked; } + void SetIsCameraLocked(bool cameraLock) + { m_IsCameraLocked = cameraLock; } + tPointCamera* GetCamera() const + { return m_Camera; } + + static bool GetEntityName(tEntity* entity, char* name, int maxLen); + + void InventoryClear(); + int InventoryGetEntityCount() const; + bool InventoryGetEntityName(int index, + char* name, int nameLen, + char* type, int typeLen) const; + + void RenderPose(tPose* pose); + void DrawAxes(const rmt::Matrix& m, float radius); + void DrawLine(const rmt::Vector& a, const rmt::Vector& b, tColour c); + + void SetBackgroundColour( int r , int g , int b ); + +private: + + void CameraPan(int dx, int dy); + void CameraZoom(int dz); + void CameraRotate(int dx, int dy); + + HWND m_HWnd; + + tContext* m_Context; + tView* m_View; + tPointCamera* m_Camera; + tDirectionalLight* m_Light; + pddiShader* m_Shader; + + float m_CurrentTime; + float m_FPS[MAX_FPS_COUNT]; + int m_FPSIndex; + float m_SimRate; + + rmt::Vector m_CameraTarget; + float m_CameraRotateX; + float m_CameraRotateY; + float m_CameraDistance; + bool m_IsCameraLocked; + + int m_MouseCapture; + int m_MouseX; + int m_MouseY; +}; + + +extern SPContext* g_SPContext; + + +#endif // SP_ENGINE_CONTEXT_HPP diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/dllmain.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/dllmain.cpp new file mode 100644 index 0000000..5d2df57 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/dllmain.cpp @@ -0,0 +1,43 @@ +/* + * fightviewer/code/engine/dllmain.cpp + */ + + +#include <windows.h> + + +HINSTANCE SPHInstance = 0; + + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, + DWORD reason, + LPVOID reserved) +{ + SPHInstance = hinstDLL; + + // Perform actions based on the reason for calling. + switch (reason) + { + case DLL_PROCESS_ATTACH: + // Initialize once for each new process. + // Return FALSE to fail DLL load. + break; + + case DLL_THREAD_ATTACH: + // Do thread-specific initialization. + break; + + case DLL_THREAD_DETACH: + // Do thread-specific cleanup. + break; + + case DLL_PROCESS_DETACH: + // Perform any necessary cleanup. + break; + } + + return TRUE; +} + + +// End of file. diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/platform.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/platform.cpp new file mode 100644 index 0000000..c27a39e --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/platform.cpp @@ -0,0 +1,94 @@ +/* + * sp/engine/platform.cpp + */ + + +#include <sp/interface/platform.hpp> + +#include <radmemory.hpp> +#include <radplatform.hpp> +#include <radtime.hpp> +#include <radfile.hpp> +#include <radthread.hpp> + +#include <p3d/utility.hpp> + + +extern HINSTANCE SPHInstance; + +//--------------------------------------------------------------------------- +// SPPlatform - DLL interface +//--------------------------------------------------------------------------- + +int SP_CALLCONV SPPlatformOpen(HWND hwnd) +{ + // ftt thread init + radThreadInitialize(); + + // ftt memory init + radMemoryInitialize(); + + // ftt platform init + radPlatformInitialize(hwnd, SPHInstance); + + // ftt time init + radTimeInitialize(); + + // ftt file init + radFileInitialize(); + + // p3d platform init + tPlatform* platform = tPlatform::Create(SPHInstance); + if (platform == 0) + return -1; + + // game project create + /* + if (g_SPProject == 0) + { + g_SPProject = SP_PROC_NEWPROJECT(); + P3DASSERT(g_SPProject != 0); + if (g_SPProject == 0) + return -1; + g_SPProject->AddRef(); + g_SPProject->ProjectInit(); + } + */ + + return 0; +} + +int SP_CALLCONV SPPlatformClose() +{ + // destroy game project + //tRefCounted::Release(g_SPProject); + + // destroy workspace + //tRefCounted::Release(g_SPWorkspace); + + // p3d platform destroy + if (p3d::platform != 0) + { + tPlatform::Destroy(p3d::platform); + } + + // ftt file destroy + radFileTerminate(); + + // ftt time destroy + radTimeTerminate(); + + // ftt platform destroy + radPlatformTerminate(); + + // ftt memory destroy + radMemoryTerminate(); + + // ftt thread destroy + radThreadTerminate(); + + return 0; +} + + +// End of file. diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.cpp new file mode 100644 index 0000000..cbfa84d --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.cpp @@ -0,0 +1,445 @@ +#include <p3d/utility.hpp> +#include <p3d/matrixstack.hpp> +#include <p3d/anim/multicontroller.hpp> +#include <p3d/anim/compositedrawable.hpp> +#include <p3d/anim/animatedobject.hpp> +#include <p3d/anim/animate.hpp> + +#include <toollib/chunks16/inc/tlStatePropChunk.hpp> +#include <toollib/inc/tlFile.hpp> +#include <toollib/inc/tlFileByteStream.hpp> + +#include "stateprop.hpp" +#include "statepropdata.hpp" + +CStateProp* CStateProp::CreateCStateProp( CStatePropData* statePropData , unsigned int state ) +{ + tAnimatedObjectFactory* objectFactory = statePropData->m_ObjectFactory; + + if ( !objectFactory ) + { + objectFactory = p3d::find<tAnimatedObjectFactory>( statePropData->m_FactoryName ); + if ( objectFactory ) + { + statePropData->m_ObjectFactory = objectFactory; + statePropData->m_ObjectFactory->AddRef(); + } + } + + if ( objectFactory ) + { + tAnimatedObject* animatedObject = objectFactory->CreateObject(NULL); + CStateProp* stateProp = new CStateProp( animatedObject , statePropData , state ); + return stateProp; + } + + return NULL; +} + +CStateProp::CStateProp( tAnimatedObject* animatedObject , CStatePropData* statePropData , unsigned int state ) : + m_StatePropData( NULL ), + m_AnimatedObject( NULL ), + m_BaseFrameController( NULL ), + m_StatePropListener( NULL ), + m_CurrentState( state ) +{ + //set state data + P3DASSERT( statePropData ); + m_StatePropData = statePropData; + m_StatePropData->AddRef(); + + //set animated object + P3DASSERT( animatedObject ); + m_AnimatedObject = animatedObject; + m_AnimatedObject->AddRef(); + + //base frame controller is run in milliseconds (ie the 1 is the timer) + m_BaseFrameController = new tMultiController(0 , 1000.f); + m_BaseFrameController->AddRef(); + m_BaseFrameController->Reset(); + + //initilize transform + rmt::Matrix identity; + identity.Identity(); + SetTransformationMatrix( identity ); + + //initialize the state + SetState( state ); +} + +CStateProp::~CStateProp() +{ + if ( m_BaseFrameController ) + m_BaseFrameController->Release(); + if ( m_StatePropData ) + m_StatePropData->Release(); + if ( m_AnimatedObject ) + m_AnimatedObject->Release(); +} + +void CStateProp::Update( float dt ) +{ + unsigned int i; + + float lastFrame = m_BaseFrameController->GetFrame(); + m_BaseFrameController->Advance( dt ); + float newFrame = m_BaseFrameController->GetFrame(); + + //Check out transition + TransitionData tansdata = m_StatePropData->GetTransitionData( m_CurrentState ); + if ( tansdata.autoTransition ) + { + if (tansdata.onFrame >= lastFrame && tansdata.onFrame < newFrame) + { + SetState( tansdata.toState ); + } + } + + //Check callback events + if ( m_StatePropListener ) + { + for ( i = 0; i < m_StatePropData->GetNumberOfCallbacks( m_CurrentState ); i++ ) + { + CallbackData callbackData = m_StatePropData->GetCallbackData( m_CurrentState , i ); + if ( callbackData.onFrame >= lastFrame && callbackData.onFrame < newFrame) + { + m_StatePropListener->RecieveEvent( callbackData.callbackID , this ); + } + } + } + + //update frame controllers + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( i = 0; i < numFrameControllers; i++ ) + { + FrameControllerData fcData = m_StatePropData->GetFrameControllerData( m_CurrentState , i ); + + //if we need to update + if ( fcData.minFrame != fcData.maxFrame ) + { + tFrameController* fc = GetFrameControllerByIndex( i ); + + //if the min frame is greater than the max frame then reverse the update + if ( fcData.minFrame > fcData.maxFrame ) + { + fc->Advance( -dt , false ); + } + else + { + fc->Advance( dt , false ); + } + + if ( fcData.isCyclic && fcData.numberOfCycles > 0 ) + { + unsigned int currentNumberOfCycles = fc->LastFrameReached(); + if ( currentNumberOfCycles >= fcData.numberOfCycles ) + { + fc->SetCycleMode( FORCE_NON_CYCLIC ); + fc->SetFrame( fcData.maxFrame ); + } + } + } + } +} + +void CStateProp::Render() +{ + p3d::stack->Push(); + p3d::stack->Multiply( m_Transform ); + + m_AnimatedObject->Display(); + + p3d::stack->Pop(); +} + +void CStateProp::UpdateFrameControllersForRender() +{ + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( unsigned int i = 0; i < numFrameControllers; i++ ) + { + GetFrameControllerByIndex( i )->Advance( 0.f , true ); + } +} + +unsigned int CStateProp::GetState() +{ + return m_CurrentState; +} + +void CStateProp::NextState() +{ + if ( m_CurrentState + 1 >= m_StatePropData->GetNumberOfStates() ) + { + SetState( 0 ); + } + else + { + SetState( m_CurrentState + 1 ); + } +} + +void CStateProp::PrevState() +{ + if ( m_CurrentState - 1 < 0 ) + { + SetState( m_StatePropData->GetNumberOfStates() - 1 ); + } + else + { + SetState( m_CurrentState - 1 ); + } +} + +void CStateProp::SetState( unsigned int state ) +{ + if ( state < m_StatePropData->GetNumberOfStates() && state >= 0 ) + { + m_CurrentState = state; + } + + m_BaseFrameController->SetFrame(0.f); + + unsigned int i; + + //reset the FC for new state + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( i = 0; i < numFrameControllers; i++ ) + { + FrameControllerData frameControllerData = m_StatePropData->GetFrameControllerData( m_CurrentState , i ); + tFrameController* fc = GetFrameControllerByIndex(i); + + //if we are holding a frame over from last state dont reset + if ( !frameControllerData.holdFrame ) + { + //Reset() MUST come first or it will trounce frame ranges etc... + fc->Reset(); + } + fc->SetRelativeSpeed( frameControllerData.relativeSpeed ); + fc->SetCycleMode( (frameControllerData.isCyclic == 1) ? FORCE_CYCLIC : FORCE_NON_CYCLIC ); + if ( frameControllerData.minFrame > frameControllerData.maxFrame ) + { + fc->SetFrameRange( frameControllerData.maxFrame , frameControllerData.minFrame ); + } + else + { + fc->SetFrameRange( frameControllerData.minFrame , frameControllerData.maxFrame ); + } + + if ( !frameControllerData.holdFrame ) + { + fc->SetFrame( frameControllerData.minFrame ); + } + } + + //Set visibility for new state + unsigned int numElements = m_AnimatedObject->GetBaseObject()->GetNumDrawableElement(); + for ( i = 0; i < numElements; i++ ) + { + tCompositeDrawable::DrawableElement* de = GetDrawableElement(i); + + de->SetLockVisibility(false); + VisibilityData visibilityData = m_StatePropData->GetVisibilityData( m_CurrentState , i ); + bool visible = visibilityData.isVisible == 1; + de->SetVisibility( visible ); + + //lock visibility if visiblility if false + de->SetLockVisibility(!visible); + } +} + +void CStateProp::OnEvent( unsigned int eventID ) +{ + unsigned int i; + unsigned int numEvents = m_StatePropData->GetNumberOfEvents( m_CurrentState ); + for ( i = 0; i < numEvents; i++ ) + { + EventData eventData = m_StatePropData->GetEventData( m_CurrentState , i ); + if ( eventData.eventID == eventID ) + { + SetState( eventData.toState ); + } + } +} + +void CStateProp::UpdateOnDataEdit() +{ + //Update without reseting the current frame or current state info + unsigned int i; + + //update frame controllers + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( i = 0; i < numFrameControllers; i++ ) + { + FrameControllerData frameControllerData = m_StatePropData->GetFrameControllerData( m_CurrentState , i ); + tFrameController* fc = GetFrameControllerByIndex(i); + float frame = fc->GetFrame(); + fc->Reset(); + fc->SetRelativeSpeed( frameControllerData.relativeSpeed ); + fc->SetCycleMode( (frameControllerData.isCyclic == 1) ? FORCE_CYCLIC : FORCE_NON_CYCLIC ); + if ( frameControllerData.minFrame > frameControllerData.maxFrame ) + { + fc->SetFrameRange( frameControllerData.maxFrame , frameControllerData.minFrame ); + } + else + { + fc->SetFrameRange( frameControllerData.minFrame , frameControllerData.maxFrame ); + } + + fc->SetFrame( frame ); + } + + //set visibilites + unsigned int numDrawableElements = GetNumberOfDrawableElements(); + for ( i = 0; i < numDrawableElements; i++ ) + { + tCompositeDrawable::DrawableElement* de = GetDrawableElement(i); + + de->SetLockVisibility(false); + VisibilityData visibilityData = m_StatePropData->GetVisibilityData( m_CurrentState , i ); + bool visible = visibilityData.isVisible == 1; + de->SetVisibility( visible ); + + //lock visibility if visiblility if false + de->SetLockVisibility(!visible); + } +} + +float CStateProp::GetBaseFrameControllerFrame() +{ + return m_BaseFrameController->GetFrame(); +} + +CStatePropData* CStateProp::GetCStatePropData() +{ + return m_StatePropData; +} + +unsigned int CStateProp::GetNumberOfFrameControllers() +{ + return m_AnimatedObject->GetCurrentAnimation()->GetNumFrameControllers(); +} + +tFrameController* CStateProp::GetFrameControllerByIndex( unsigned int i ) +{ + return m_AnimatedObject->GetCurrentAnimation()->GetFrameControllerByIndex(i); +} + +unsigned int CStateProp::GetNumberOfDrawableElements() +{ + return m_AnimatedObject->GetBaseObject()->GetNumDrawableElement(); +} + +tCompositeDrawable::DrawableElement* CStateProp::GetDrawableElement( unsigned int i ) +{ + return m_AnimatedObject->GetBaseObject()->GetDrawableElement( i ); +} + +const char* CStateProp::GetDrawableName( unsigned int i ) +{ + return m_AnimatedObject->GetBaseObject()->GetDrawableElement( i )->GetDrawable()->GetName(); +} + +const char* CStateProp::GetPropName( ) +{ + return GetName(); +} + +//Export the CStatePropData +void CStateProp::ExportChunk( const char* filename ) +{ + //create the outchunk data chunk + tlDataChunk* outchunk = new tlDataChunk; + + //create smart prop chunk + char buf[256]; + tlStatePropChunk* statepropchunk = new tlStatePropChunk; + + //version one has extra floats and ints + statepropchunk->SetVersion( 1 ); + + statepropchunk->SetName( m_StatePropData->GetName() ); + statepropchunk->SetObjectFactoryName( m_StatePropData->GetName() ); + statepropchunk->SetNumStates( m_StatePropData->GetNumberOfStates() ); + + unsigned int state; + int j; + //create state subchunks + for ( state = 0; state < m_StatePropData->GetNumberOfStates(); state++ ) + { + tlStatePropStateDataChunk* statechunk = new tlStatePropStateDataChunk; + sprintf(buf, "state%i", state ); + statechunk->SetName( buf ); + TransitionData tData = m_StatePropData->GetTransitionData( state ); + statechunk->SetAutoTransition( tData.autoTransition ); + statechunk->SetOutFrame( tData.onFrame ); + statechunk->SetOutState( tData.toState ); + + int numDrawables = GetNumberOfDrawableElements(); + statechunk->SetNumDrawables( numDrawables ); + for ( j = 0; j < numDrawables; j++ ) + { + tlStatePropVisibilitiesDataChunk* visibilitychunk = new tlStatePropVisibilitiesDataChunk; + VisibilityData vData = m_StatePropData->GetVisibilityData( state , j ); + visibilitychunk->SetName( GetDrawableElement(j)->GetDrawable()->GetName() ); + visibilitychunk->SetVisible( vData.isVisible ); + statechunk->AppendSubChunk( visibilitychunk ); + } + + int numFrameControllers = GetNumberOfFrameControllers(); + statechunk->SetNumFrameControllers( numFrameControllers ); + for ( j = 0; j < numFrameControllers; j++ ) + { + tlStatePropFrameControllerDataChunk* framecontrollerchunk = new tlStatePropFrameControllerDataChunk; + FrameControllerData fData = m_StatePropData->GetFrameControllerData( state , j ); + framecontrollerchunk->SetName( GetFrameControllerByIndex(j)->GetName() ); + framecontrollerchunk->SetCyclic( fData.isCyclic ); + framecontrollerchunk->SetMinFrame( fData.minFrame ); + framecontrollerchunk->SetMaxFrame( fData.maxFrame ); + framecontrollerchunk->SetRelativeSpeed( fData.relativeSpeed ); + framecontrollerchunk->SetHoldFrame( fData.holdFrame ); + framecontrollerchunk->SetNumberOfCycles( fData.numberOfCycles ); + statechunk->AppendSubChunk( framecontrollerchunk ); + } + + int numEvents = m_StatePropData->GetNumberOfEvents( state ); + statechunk->SetNumEvents( numEvents ); + for ( j = 0; j < numEvents; j++ ) + { + tlStatePropEventDataChunk* eventdatachunk = new tlStatePropEventDataChunk; + EventData eData = m_StatePropData->GetEventData( state , j ); + eventdatachunk->SetName( eData.eventName ); + eventdatachunk->SetState( eData.toState ); + eventdatachunk->SetEventEnum( eData.eventID ); + statechunk->AppendSubChunk( eventdatachunk ); + } + + int numCallbacks = m_StatePropData->GetNumberOfCallbacks( state ); + statechunk->SetNumCallbacks( numCallbacks ); + for ( j = 0; j < numCallbacks; j++ ) + { + tlStatePropCallbackDataChunk* callbackChunk = new tlStatePropCallbackDataChunk; + CallbackData cData = m_StatePropData->GetCallbackData( state , j ); + callbackChunk->SetName( cData.callbackName ); + callbackChunk->SetOnFrame( cData.onFrame ); + callbackChunk->SetEventEnum( cData.callbackID ); + statechunk->AppendSubChunk( callbackChunk ); + } + + //append the sate chunk + statepropchunk->AppendSubChunk( statechunk ); + } + + outchunk->AppendSubChunk( statepropchunk ); + + // create the new output file + tlFile output(new tlFileByteStream(filename,omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + printf("Could not open %s for writing\n", filename); + return ; + } + + outchunk->Write(&output); + output.Close(); +}
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.hpp new file mode 100644 index 0000000..c72b76b --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/stateprop.hpp @@ -0,0 +1,120 @@ +#ifndef _STATEPROP_HPP_ +#define _STATEPROP_HPP_ + +#include "radmath/radmath.hpp" + +//============================================================================= +// Forward Class/Struct Declarations +//============================================================================= + +class tFrameController; +class tAnimatedObject; +class CStatePropData; +class CStateProp; +class tCompositeDrawable; + + +//============================================================================= +// Class Declarations +// PropListener +//============================================================================= + +class CStatePropListener : public tRefCounted +{ +public: + virtual void RecieveEvent( int event , CStateProp* stateProp ) = 0; +}; + +//============================================================================= +// Definitions +//============================================================================= + + +//============================================================================= +// Class Declarations +// CStateProp +//============================================================================= +class CStateProp : public tEntity +{ +public: + + static CStateProp* CreateCStateProp( CStatePropData* statePropData , unsigned int state ); + + CStateProp( tAnimatedObject* animatedObject , CStatePropData* statePropData , unsigned int state = 0 ); + ~CStateProp(); + + //Per frame update + void Update( float dt ); + + //Render + void Render(); + + //call before render + void UpdateFrameControllersForRender(); + + unsigned int GetState(); + void SetState( unsigned int state ); + void NextState(); + void PrevState(); + + void OnEvent( unsigned int eventID ); + + void SetTransformationMatrix( const rmt::Matrix &tm); + const rmt::Matrix& GetTransformationMatrix() const; + + void SetPosition( const rmt::Vector& pos ); + const rmt::Vector& GetPosition() const; + + //Get State Prop Data + CStatePropData* GetCStatePropData(); + + // Update for new data + void UpdateOnDataEdit(); + + //accessors + float GetBaseFrameControllerFrame(); + unsigned int GetNumberOfFrameControllers(); + tFrameController* GetFrameControllerByIndex( unsigned int i ); + unsigned int GetNumberOfDrawableElements(); + tCompositeDrawable::DrawableElement* GetDrawableElement( unsigned int i ); + const char* GetDrawableName( unsigned int i ); + const char* GetPropName(); + + //Export the SmartPropData + void ExportChunk( const char* filename ); + + +private: + + // Orientation and location + rmt::Matrix m_Transform; + + //Private members + CStatePropData* m_StatePropData; + tAnimatedObject* m_AnimatedObject; + tFrameController* m_BaseFrameController; + unsigned int m_CurrentState; + + CStatePropListener* m_StatePropListener; +}; + + +inline void CStateProp::SetPosition( const rmt::Vector& pos ) +{ + m_Transform.FillTranslate( pos ); +} +inline const rmt::Vector& CStateProp::GetPosition() const +{ + return const_cast< RadicalMathLibrary::Matrix & >( m_Transform ).Row(3); +} + +inline void CStateProp::SetTransformationMatrix(const rmt::Matrix& tmx) +{ + m_Transform = tmx; +} +inline const rmt::Matrix& CStateProp::GetTransformationMatrix() const +{ + return m_Transform; +} + +#endif //_STATEPROP_HPP_
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.cpp new file mode 100644 index 0000000..eb88194 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.cpp @@ -0,0 +1,509 @@ +#include <string.h> +#include <p3d/utility.hpp> +#include <p3d/anim/animatedobject.hpp> +#include <constants/chunkids.hpp> +#include <p3d/chunkfile.hpp> + +#include "statepropdata.hpp" + +//============================================================================= +// Class Declarations +// Prop +//============================================================================= + +CStatePropData::CStatePropData( tAnimatedObjectFactory* factory ) : + tEntity(), + m_NumStates(1) +{ + P3DASSERT ( factory ); + m_ObjectFactory = factory; + m_ObjectFactory->AddRef(); + SetName( m_ObjectFactory->GetName() ); + + ResetData(); +} + +CStatePropData::CStatePropData( ) : + tEntity(), + m_NumStates(1), + m_ObjectFactory( NULL ) +{ + ResetData(); +} + +CStatePropData::~CStatePropData() +{ + m_ObjectFactory->Release(); +} + +//============================================================================= +//State Data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfStates() +{ + return m_NumStates; +} +StateData CStatePropData::GetStateData( unsigned int state ) +{ + return m_StateData[ state ]; +} + +//Set +void CStatePropData::InsertState( unsigned int state ) +{ + if ( m_NumStates >= MAX_STATES - 1) + return; + + //increase the number of states and copy all the data up a state + m_NumStates++; + + unsigned int i , j; + for ( i = m_NumStates - 1; i > state + 1; i-- ) + { + //transition data for each state + m_StateData[i].transitionData.autoTransition = m_StateData[i-1].transitionData.autoTransition; + m_StateData[i].transitionData.onFrame = m_StateData[i-1].transitionData.onFrame; + m_StateData[i].transitionData.toState = m_StateData[i-1].transitionData.toState; + + //visibility data for each drawable in each state + for (j = 0; j < MAX_VISIBILITIES; j++ ) + { + m_StateData[i].visibilityData[j].isVisible = m_StateData[i-1].visibilityData[j].isVisible; + } + + //framecontroller data in each state + for (j = 0; j < MAX_FRAMECONTROLLERS; j++ ) + { + m_StateData[i].frameControllerData[j].isCyclic = m_StateData[i-1].frameControllerData[j].isCyclic; + m_StateData[i].frameControllerData[j].maxFrame = m_StateData[i-1].frameControllerData[j].maxFrame; + m_StateData[i].frameControllerData[j].minFrame = m_StateData[i-1].frameControllerData[j].minFrame; + m_StateData[i].frameControllerData[j].relativeSpeed = m_StateData[i-1].frameControllerData[j].relativeSpeed; + m_StateData[i].frameControllerData[j].holdFrame = m_StateData[i-1].frameControllerData[j].holdFrame; + m_StateData[i].frameControllerData[j].numberOfCycles = m_StateData[i-1].frameControllerData[j].numberOfCycles; + } + + //event data for each state + m_StateData[i].numEvents = m_StateData[i-1].numEvents; + m_StateData[i].numCallbacks = m_StateData[i-1].numCallbacks; + for (j = 0; j < MAX_EVENTS; j++ ) + { + strcpy( m_StateData[i].eventData[j].eventName , m_StateData[i-1].eventData[j].eventName ); + m_StateData[i].eventData[j].toState = m_StateData[i-1].eventData[j].toState; + m_StateData[i].eventData[j].eventID = m_StateData[i-1].eventData[j].eventID; + + strcpy( m_StateData[i].callbackData[j].callbackName , m_StateData[i-1].callbackData[j].callbackName ); + m_StateData[i].callbackData[j].onFrame = m_StateData[i-1].callbackData[j].onFrame; + m_StateData[i].callbackData[j].callbackID = m_StateData[i-1].callbackData[j].callbackID; + } + } + + //Initialize the newly added state + + //transition data for each state + m_StateData[state + 1].transitionData.autoTransition = 0; + m_StateData[state + 1].transitionData.onFrame = 0.f; + m_StateData[state + 1].transitionData.toState = 0; + + //visibility data for each drawable in each state + for (j = 0; j < MAX_VISIBILITIES; j++ ) + { + m_StateData[state + 1].visibilityData[j].isVisible = 1; + } + + //framecontroller data in each state + for (j = 0; j < MAX_FRAMECONTROLLERS; j++ ) + { + m_StateData[state + 1].frameControllerData[j].isCyclic = 0; + m_StateData[state + 1].frameControllerData[j].maxFrame = 0.f; + m_StateData[state + 1].frameControllerData[j].minFrame = 0.f; + m_StateData[state + 1].frameControllerData[j].relativeSpeed = 1.f; + m_StateData[state + 1].frameControllerData[j].holdFrame = 0; + m_StateData[state + 1].frameControllerData[j].numberOfCycles = 0; + } + + //event data for each state + m_StateData[state + 1].numEvents = 0; + m_StateData[state + 1].numCallbacks = 0; +} + +void CStatePropData::DeleteState( unsigned int state ) +{ + if ( m_NumStates == 1 ) + { + ResetData(); + return; + } + + int i; + int j; + + for ( i = state; i < m_NumStates - 1; i++ ) + { + //transition data for each state + m_StateData[i].transitionData.autoTransition = m_StateData[i+1].transitionData.autoTransition; + m_StateData[i].transitionData.onFrame = m_StateData[i+1].transitionData.onFrame; + m_StateData[i].transitionData.toState = m_StateData[i+1].transitionData.toState; + + //visibility data for each drawable in each state + for (j = 0; j < MAX_VISIBILITIES; j++ ) + { + m_StateData[i].visibilityData[j].isVisible = m_StateData[i+1].visibilityData[j].isVisible; + } + + //framecontroller data in each state + for (j = 0; j < MAX_FRAMECONTROLLERS; j++ ) + { + m_StateData[i].frameControllerData[j].isCyclic = m_StateData[i+1].frameControllerData[j].isCyclic; + m_StateData[i].frameControllerData[j].maxFrame = m_StateData[i+1].frameControllerData[j].maxFrame; + m_StateData[i].frameControllerData[j].minFrame = m_StateData[i+1].frameControllerData[j].minFrame; + m_StateData[i].frameControllerData[j].relativeSpeed = m_StateData[i+1].frameControllerData[j].relativeSpeed; + m_StateData[i].frameControllerData[j].holdFrame = m_StateData[i+1].frameControllerData[j].holdFrame; + m_StateData[i].frameControllerData[j].numberOfCycles = m_StateData[i+1].frameControllerData[j].numberOfCycles; + } + + //event data for each state + m_StateData[i].numEvents = m_StateData[i+1].numEvents; + m_StateData[i].numCallbacks = m_StateData[i+1].numCallbacks; + for (j = 0; j < MAX_EVENTS; j++ ) + { + strcpy( m_StateData[i].eventData[j].eventName , m_StateData[i+1].eventData[j].eventName ); + m_StateData[i].eventData[j].toState = m_StateData[i+1].eventData[j].toState; + m_StateData[i].eventData[j].eventID = m_StateData[i+1].eventData[j].eventID; + + strcpy( m_StateData[i].callbackData[j].callbackName , m_StateData[i+1].callbackData[j].callbackName ); + m_StateData[i].callbackData[j].onFrame = m_StateData[i+1].callbackData[j].onFrame; + m_StateData[i].callbackData[j].callbackID = m_StateData[i+1].callbackData[j].callbackID; + } + } + + m_NumStates--; +} + +//============================================================================= +//Transition Data +//============================================================================= + +//Get +TransitionData CStatePropData::GetTransitionData( int state ) +{ + return m_StateData[state].transitionData; +} + +//Set +void CStatePropData::SetAutoTransition( int state, bool b ) +{ + m_StateData[state].transitionData.autoTransition = b; +} +void CStatePropData::SetAutoTransitionOnFrame( int state, float onFrame ) +{ + m_StateData[state].transitionData.onFrame = onFrame; +} +void CStatePropData::SetAutoTransitionToState( int state, int toState ) +{ + m_StateData[state].transitionData.toState = toState; +} + +//============================================================================= +//Visibility Data +//============================================================================= + +//Get +VisibilityData CStatePropData::GetVisibilityData( int state , int index) +{ + return ( m_StateData[state].visibilityData[index] ); +} + +//Set +void CStatePropData::SetVisible( int state , int index , bool b ) +{ + m_StateData[state].visibilityData[index].isVisible = b; +} +void CStatePropData::SetAllVisibilities( int state , bool b ) +{ + for ( int i = 0; i < MAX_VISIBILITIES; i++ ) + { + m_StateData[state].visibilityData[i].isVisible = b; + } +} +void CStatePropData::ShowAll(int state) +{ + SetAllVisibilities( state , true ); +} +void CStatePropData::HideAll(int state) +{ + SetAllVisibilities( state , false ); +} + +//============================================================================= +//Frame controller data +//============================================================================= + +//Get +FrameControllerData CStatePropData::GetFrameControllerData( int state, int fc ) +{ + return m_StateData[state].frameControllerData[fc]; +} + +//Set +void CStatePropData::SetCyclic( int state ,int fc, bool isCyclic ) +{ + m_StateData[state].frameControllerData[fc].isCyclic = isCyclic; +} +void CStatePropData::SetRelativeSpeed( int state ,int fc, float speed ) +{ + m_StateData[state].frameControllerData[fc].relativeSpeed = speed; +} +void CStatePropData::SetFrameRange( int state , int fc, float min, float max ) +{ + m_StateData[state].frameControllerData[fc].minFrame = min; + m_StateData[state].frameControllerData[fc].maxFrame = max; +} +void CStatePropData::SetHoldFrame( int state , int fc , bool holdFrame ) +{ + m_StateData[state].frameControllerData[fc].holdFrame = holdFrame; +} +void CStatePropData::SetNumberOfCycles( int state , int fc , unsigned int numberOfCycles ) +{ + m_StateData[state].frameControllerData[fc].numberOfCycles = numberOfCycles; +} + + +//============================================================================= +//Event data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfEvents( int state ) +{ + return m_StateData[state].numEvents; +} +EventData CStatePropData::GetEventData( int state , int eventindex ) +{ + return m_StateData[state].eventData[eventindex]; +} + +//Set +void CStatePropData::AddEvent( const char* event , int eventEnum , int toState , int fromState ) +{ + int n_events = m_StateData[fromState].numEvents; + + strcpy( m_StateData[fromState].eventData[n_events].eventName , event ); + m_StateData[fromState].eventData[n_events].toState = toState; + m_StateData[fromState].eventData[n_events].eventID = eventEnum; + + m_StateData[fromState].numEvents = n_events + 1; +} +void CStatePropData::EditEvent( int state, int EventIndex, char* eventName, int eventID , int toState ) +{ + strcpy( m_StateData[state].eventData[EventIndex].eventName , eventName ); + m_StateData[state].eventData[EventIndex].toState = toState; + m_StateData[state].eventData[EventIndex].eventID = eventID; +} +void CStatePropData::DeleteEvent( int state , int index ) +{ + int numEvents = m_StateData[state].numEvents; + for ( int i = index; i < numEvents - 1; i++ ) + { + strcpy( m_StateData[state].eventData[i].eventName , m_StateData[state].eventData[i+1].eventName ); + m_StateData[state].eventData[i].toState = m_StateData[state].eventData[i+1].toState; + m_StateData[state].eventData[i].eventID = m_StateData[state].eventData[i+1].eventID; + } + + strcpy( m_StateData[state].eventData[numEvents - 1].eventName , "" ); + m_StateData[state].eventData[numEvents - 1].toState = 0; + m_StateData[state].eventData[numEvents - 1].eventID = 0; + + m_StateData[state].numEvents = numEvents - 1; +} + +//============================================================================= +//Callback Data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfCallbacks( int state ) +{ + return m_StateData[state].numCallbacks; +} +CallbackData CStatePropData::GetCallbackData( int state , int eventindex ) +{ + return m_StateData[state].callbackData[eventindex]; +} + +//Set +void CStatePropData::AddCallback( int state , const char* callback , int callbackID , float onFrame ) +{ + int n_callbacks = m_StateData[state].numCallbacks; + + strcpy( m_StateData[state].callbackData[n_callbacks].callbackName , callback ); + m_StateData[state].callbackData[n_callbacks].onFrame = onFrame; + m_StateData[state].callbackData[n_callbacks].callbackID = callbackID; + + m_StateData[state].numCallbacks = n_callbacks + 1; +} +void CStatePropData::EditCallback( int state, int CBIndex, char* callbackname, int callbackID , float onFrame ) +{ + strcpy( m_StateData[state].callbackData[CBIndex].callbackName , callbackname ); + m_StateData[state].callbackData[CBIndex].onFrame = onFrame; + m_StateData[state].callbackData[CBIndex].callbackID = callbackID; +} +void CStatePropData::DeleteCallback( int state , int index ) +{ + int numCallbacks = m_StateData[state].numCallbacks; + for ( int i = index; i < numCallbacks - 1; i++ ) + { + strcpy( m_StateData[state].callbackData[i].callbackName , m_StateData[state].callbackData[i+1].callbackName ); + m_StateData[state].callbackData[i].onFrame = m_StateData[state].callbackData[i+1].onFrame; + m_StateData[state].callbackData[i].callbackID = m_StateData[state].callbackData[i+1].callbackID; + } + + strcpy( m_StateData[state].callbackData[numCallbacks - 1].callbackName , "" ); + m_StateData[state].callbackData[numCallbacks - 1].onFrame = 0.f; + m_StateData[state].callbackData[numCallbacks - 1].callbackID = 0; + + m_StateData[state].numCallbacks = numCallbacks - 1; +} + + + +//============================================================================= +//Utility +//============================================================================= +void CStatePropData::ResetData() +{ + unsigned int state; + unsigned int j; + + for ( state = 0; state < MAX_STATES; state++ ) + { + //transition data + m_StateData[state].transitionData.autoTransition = 0; + m_StateData[state].transitionData.onFrame = 0.f; + m_StateData[state].transitionData.toState = 0; + + //framecontrollers + for ( j = 0; j < MAX_FRAMECONTROLLERS; j++ ) + { + m_StateData[state].frameControllerData[j].isCyclic = false; + m_StateData[state].frameControllerData[j].minFrame = 0.f; + m_StateData[state].frameControllerData[j].maxFrame = 0.f; + m_StateData[state].frameControllerData[j].relativeSpeed = 1.f; + m_StateData[state].frameControllerData[j].holdFrame = 0; + m_StateData[state].frameControllerData[j].numberOfCycles = 0; + + } + + //visibilites + for ( j = 0; j < MAX_VISIBILITIES; j++ ) + { + m_StateData[state].visibilityData[j].isVisible = true; + } + + //events && callbacks + m_StateData[state].numEvents = 0; + m_StateData[state].numCallbacks = 0; + for ( j = 0; j < MAX_EVENTS; j++ ) + { + strcpy( m_StateData[state].eventData[j].eventName , "" ); + m_StateData[state].eventData[j].toState = 0; + m_StateData[state].eventData[j].eventID = 0; + + strcpy( m_StateData[state].callbackData[j].callbackName , "" ); + m_StateData[state].callbackData[j].onFrame = 0.f; + m_StateData[state].callbackData[j].callbackID = 0; + } + } +} + + + +//============================================================================= +// Class Declarations +// PropLoader +//============================================================================= +CStatePropDataLoader::CStatePropDataLoader() : + tSimpleChunkHandler(StateProp::STATEPROP) +{ +} + +//------------------------------------------------------------------------- +tEntity* CStatePropDataLoader::LoadObject(tChunkFile* f, tEntityStore* store) +{ + unsigned int version = f->GetLong(); + + CStatePropData* statePropData = new CStatePropData(); + statePropData->ResetData(); + + char buf[256]; + + f->GetPString(buf); + statePropData->SetName(buf); + + strcpy( statePropData->m_FactoryName , f->GetPString(buf) ); + statePropData->m_ObjectFactory = p3d::find<tAnimatedObjectFactory>(store, statePropData->m_FactoryName); + if ( statePropData->m_ObjectFactory ) + { + statePropData->m_ObjectFactory->AddRef(); + } + + statePropData->m_NumStates = f->GetLong(); + + for ( int currState = 0; currState < statePropData->m_NumStates; currState++ ) + { + f->BeginChunk(); + + f->GetPString(buf); + statePropData->m_StateData[currState].transitionData.autoTransition = ( f->GetLong() != 0 ); + statePropData->m_StateData[currState].transitionData.toState = f->GetLong(); + int numDrawables = f->GetLong(); + int numFrameControllers = f->GetLong(); + statePropData->m_StateData[currState].numEvents = f->GetLong(); + statePropData->m_StateData[currState].numCallbacks = f->GetLong(); + statePropData->m_StateData[currState].transitionData.onFrame = f->GetFloat(); + + for ( int currDrawable=0; currDrawable < numDrawables; currDrawable++ ) + { + f->BeginChunk(); + f->GetPString(buf); + statePropData->m_StateData[currState].visibilityData[currDrawable].isVisible = ( f->GetLong() != 0 ); + f->EndChunk(); + } + + for ( int currFrameController=0; currFrameController < numFrameControllers; currFrameController++ ) + { + f->BeginChunk(); + f->GetPString(buf); + statePropData->m_StateData[currState].frameControllerData[currFrameController].isCyclic = ( f->GetLong() != 0 ); + statePropData->m_StateData[currState].frameControllerData[currFrameController].numberOfCycles = f->GetLong(); + statePropData->m_StateData[currState].frameControllerData[currFrameController].holdFrame = ( f->GetLong() != 0 ); + statePropData->m_StateData[currState].frameControllerData[currFrameController].minFrame = f->GetFloat(); + statePropData->m_StateData[currState].frameControllerData[currFrameController].maxFrame = f->GetFloat(); + statePropData->m_StateData[currState].frameControllerData[currFrameController].relativeSpeed = f->GetFloat(); + f->EndChunk(); + } + + for ( unsigned int currEvent=0; currEvent < statePropData->m_StateData[currState].numEvents; currEvent++ ) + { + f->BeginChunk(); + strcpy( statePropData->m_StateData[currState].eventData[currEvent].eventName , f->GetPString(buf) ); + statePropData->m_StateData[currState].eventData[currEvent].toState = f->GetLong(); + statePropData->m_StateData[currState].eventData[currEvent].eventID = f->GetLong(); + f->EndChunk(); + } + + for ( unsigned int currCallback=0; currCallback < statePropData->m_StateData[currState].numCallbacks; currCallback++ ) + { + f->BeginChunk(); + strcpy( statePropData->m_StateData[currState].callbackData[currCallback].callbackName , f->GetPString(buf) ); + statePropData->m_StateData[currState].callbackData[currCallback].callbackID = f->GetLong(); + statePropData->m_StateData[currState].callbackData[currCallback].onFrame = f->GetFloat(); + f->EndChunk(); + } + + f->EndChunk(); + } + + return statePropData; +}
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.hpp new file mode 100644 index 0000000..f6cf691 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdata.hpp @@ -0,0 +1,139 @@ +#ifndef _STATEPROPDATA_HPP_ +#define _STATEPROPDATA_HPP_ + + +#include <radmath/radmath.hpp> +#include <p3d/loadmanager.hpp> + +#include "statepropdatatypes.hpp" + +//============================================================================= +// Forward Class/Struct Declarations +//============================================================================= + +class CStateProp; +class tAnimatedObjectFactory; +class CStatePropDataLoader; + +//============================================================================= +// Definitions +//============================================================================= +#define MAX_STATES 50 +#define MAX_FRAMECONTROLLERS 250 +#define MAX_VISIBILITIES 250 +#define MAX_EVENTS 50 + +//State data +struct StateData +{ + TransitionData transitionData; + VisibilityData visibilityData[MAX_VISIBILITIES]; + FrameControllerData frameControllerData[MAX_FRAMECONTROLLERS]; + EventData eventData[MAX_EVENTS]; + CallbackData callbackData[MAX_EVENTS]; + + unsigned int numEvents; + unsigned int numCallbacks; +}; + +//============================================================================= +// Class Declarations +// Prop +//============================================================================= + +class CStatePropData : public tEntity +{ + +public: + + friend class CStateProp; + friend class CStatePropDataLoader; + + CStatePropData( tAnimatedObjectFactory* factory ); + CStatePropData(); + ~CStatePropData(); + + // State Data ===================================================================================== + //Get + unsigned int GetNumberOfStates(); + StateData GetStateData( unsigned int state ); + //Set + void InsertState( unsigned int state ); + void DeleteState( unsigned int state ); + + //Transition Data ================================================================================== + //Get + TransitionData GetTransitionData( int state ); + //Set + void SetAutoTransition( int state, bool b ); + void SetAutoTransitionOnFrame( int state, float onFrame ); + void SetAutoTransitionToState( int state, int toState ); + + //Visibility Data ================================================================================== + //Get + VisibilityData GetVisibilityData( int state , int index); + //Set + void SetVisible( int state , int index , bool b ); + void SetAllVisibilities( int state , bool b ); + void ShowAll(int state); + void HideAll(int state); + + //Frame Controller Data ============================================================================= + //Get + FrameControllerData GetFrameControllerData( int state, int fc ); + //Set + void SetCyclic( int state ,int fc, bool isCyclic ); + void SetRelativeSpeed( int state ,int fc, float speed ); + void SetFrameRange( int state ,int fc, float min, float max ); + void SetHoldFrame( int state , int fc , bool holdFrame ); + void SetNumberOfCycles( int state , int fc , unsigned int numberOfCycles ); + + //Event Data ======================================================================================== + //Get + unsigned int GetNumberOfEvents( int state ); + EventData GetEventData( int state , int eventindex ); + //Set + void AddEvent( const char* event , int eventEnum , int toState , int fromState ); + void EditEvent( int state, int EventIndex, char* eventName, int eventEnum , int toState ); + void DeleteEvent( int fromState , int index ); + + //Callback Data ====================================================================================== + //Get + unsigned int GetNumberOfCallbacks( int state ); + CallbackData GetCallbackData( int state , int eventindex ); + //Set + void AddCallback( int state , const char* event , int eventEnum , float frame ); + void EditCallback( int state, int CBIndex, char* eventname, int eventEnum , float frame ); + void DeleteCallback( int state , int index ); + +private: + + //reset the prop data + void ResetData(); + + //animated object factory + char m_FactoryName[64]; + tAnimatedObjectFactory* m_ObjectFactory; + + //total number of states + int m_NumStates; + StateData m_StateData[MAX_STATES]; + +}; + + +//============================================================================= +// Class Declarations +// PropLoader +//============================================================================= +class CStatePropDataLoader : public tSimpleChunkHandler +{ +public: + CStatePropDataLoader(); + tEntity* LoadObject(tChunkFile* file, tEntityStore* store); + +protected: + ~CStatePropDataLoader() {}; +}; + +#endif //_STATEPROPDATA_HPP_ diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdatatypes.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdatatypes.hpp new file mode 100644 index 0000000..4d035af --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/statepropdatatypes.hpp @@ -0,0 +1,45 @@ +#ifndef _STATEPROPDATATYPES_HPP_ +#define _STATEPROPDATATYPES_HPP_ + +//Transition data +struct TransitionData +{ + unsigned int autoTransition; + unsigned int toState; + float onFrame; +}; + +//Visibility data +struct VisibilityData +{ + unsigned int isVisible; +}; + +//Frame controller data +struct FrameControllerData +{ + unsigned int isCyclic; + unsigned int numberOfCycles; + unsigned int holdFrame; + float minFrame; + float maxFrame; + float relativeSpeed; +}; + +//Event data +struct EventData +{ + char eventName[64]; + unsigned int eventID; + unsigned int toState; +}; + +//Callback data +struct CallbackData +{ + char callbackName[64]; + unsigned int callbackID; + float onFrame; +}; + +#endif //_STATEPROPDATATYPES_HPP_ diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.cpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.cpp new file mode 100644 index 0000000..2d31863 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.cpp @@ -0,0 +1,879 @@ +/*=========================================================================== +Workspace.cpp - Pure3D testbed + + + Copyright (c) 1995-1999 Radical Entertainment, Inc. + All rights reserved. +===========================================================================*/ +#include <windows.h> + +#include <assert.h> +#include <string.h> +#include <typeinfo.h> +#include <ctype.h> //for isdigit +#include <stdlib.h> //for atoi + +#include <p3d/pure3d.hpp> +#include <p3d/anim/animatedobject.hpp> +#include <p3d/anim/poseanimation.hpp> +#include <p3d/anim/skeleton.hpp> +#include <p3d/geometry.hpp> +#include <p3d/anim/polyskin.hpp> +#include <p3d/utility.hpp> +#include <p3d/drawable.hpp> + +#include <simcommon/simutility.hpp> +#include <simcommon/simenvironment.hpp> // for SimUnits +#include <simcommon/simulatedobject.hpp> +#include <simcollision/collisionmanager.hpp> +#include <simcollision/collisiondisplay.hpp> +#include <simcollision/proximitydetection.hpp> + +#include <sp/interface.hpp> +#include "workspace.hpp" + +#include "stateprop.hpp" +#include "statepropdata.hpp" + +void RegisterExtraChunks(void) +{ //do nothing +} + +bool g_DrawCollision = true; +bool g_IsPaused = false; +bool g_DebugPhysicsDisplay = false; +float g_TotalTime_sec = 0.f; + +const char c_StatePropExtension[] = "_spdata.p3d"; + + +Workspace* g_Workspace = NULL; +CStateProp* g_CStateProp = NULL; + +template <class T> class TemplateIterator : public ViewerIterator +{ +public: + TemplateIterator(T* t) + { + iterator = t; + current = iterator->First(); + } + + ~TemplateIterator() + { + delete iterator; + } + + tEntity* First(void) + { + current = iterator->First(); + + return current; + } + + tEntity* Current(void) + { + if(!current) + current = iterator->First(); + + return current; + } + + tEntity* Next(bool loop = false) + { + current = iterator->Next(); + if(loop && !current) + current = iterator->First(); + return current; + } + + tEntity* Prev(void) + { + current = iterator->Prev(); + if(!current) + current = iterator->Last(); + return current; + + } + +private: + T* iterator; + tEntity* current; +}; + +class DrawIterator : public tInventory::Iterator<tDrawable> {}; +class ObjectFactoryIterator : public tInventory::Iterator<tAnimatedObjectFactory> {}; +class CStatePropDataIterator : public tInventory::Iterator<CStatePropData> {}; + + +//Get allocated memory +unsigned int GetAllocatedMemory() +{ + // on windows can't rely on the total physical memory so we must walk over + // each heap and accumulate all the memory allocated in it. there is stack + // overhead too but that should be minimal. + HANDLE heaps[128]; + + int numHeaps = GetProcessHeaps(sizeof(heaps)/sizeof(heaps[0]), heaps); + if(numHeaps > sizeof(heaps)/sizeof(heaps[0])) + { + numHeaps = sizeof(heaps)/sizeof(heaps[0]); + } + + unsigned int total = 0; + int i; + for(i=0; i<numHeaps; i++) + { + PROCESS_HEAP_ENTRY heapEntry; + + heapEntry.lpData = NULL; + if(!HeapLock(heaps[i])) + { + //HC_DEBUGPRINT(("could not lock heap %d", i)); + continue; + } + while(HeapWalk(heaps[i], &heapEntry)) + { + if(heapEntry.wFlags & PROCESS_HEAP_UNCOMMITTED_RANGE) + { + // don't count non-committed pages as some of pure3d seems to + // mmap or allocate large ranges that never actually get paged + // in + //total += heapEntry.cbData; + } + else + { + total += heapEntry.cbData; + } + } + HeapUnlock(heaps[i]); + } + + return total; +} + +//------------------------------------------------------------------- +// Workspace class +// derive from Testbed. +// +//------------------------------------------------------------------- + +Workspace::Workspace() : + m_CStateProp(NULL), + m_CollisionManager(NULL), + m_CollisionSolver(NULL), + m_DrawableFloor(NULL), + m_SimStateFloor(NULL) +{ + sim::InstallSimLoaders(); + + //draw outlines for debug render + sim::SetDrawVolumeMethod( sim::DrawVolumeShape ); + + Init(); +} + + +Workspace::~Workspace() +{ + ResetAll(); + + if ( m_CStateProp ) + m_CStateProp->Release(); + + p3d::loadManager->RemoveAllHandlers(); // should be in testbed +} + +void Workspace::Init() +{ + // get path to exe + GetModuleFileName(NULL, m_Path, sizeof(m_Path) - 1); + m_Path[ strlen(m_Path) - 13 ] = '\0'; + + m_DrawableIterator = new TemplateIterator<DrawIterator>(new DrawIterator); + m_ObjectFactoryIterator = new TemplateIterator<ObjectFactoryIterator>(new ObjectFactoryIterator); + m_CStatePropDataIterator = new TemplateIterator<CStatePropDataIterator>(new CStatePropDataIterator); + + // install loader for Prop + tP3DFileHandler* p3d = p3d::loadManager->GetP3DHandler(); + if(p3d) + { + p3d->AddHandler( new CStatePropDataLoader ); + } + + if (!sim::SimUnits::UnitSet()) + { + sim::InitializeSimulation( sim::MetersUnits ); + } + + if (!m_CollisionManager) + { + float MAX_UPDATEAI_TIME_ms = 1000.0f*1.0f/30.0f; // 30 fps + //sim::SimulatedObject::SetMaxTimeStep(MAX_UPDATEAI_TIME_ms/1000.0f); + float collisionDistanceCGS = 2.0f; // cm + m_CollisionManager = sim::CollisionManager::GetInstance(); + m_CollisionManager->AddRef(); + sim::SimEnvironment* simEnvironment = sim::SimEnvironment::GetDefaultSimEnvironment(); + simEnvironment->SetCollisionDistanceCGS(collisionDistanceCGS); + m_CollisionManager->SetCollisionManagerAttributes( sim::CM_DetectAll | sim::CM_SolveAll ); + + P3DASSERT(m_CollisionSolver == NULL); + m_CollisionSolver = new AICollisionSolverAgent(); + m_CollisionSolver->AddRef(); + m_CollisionManager->GetImpulseBasedCollisionSolver()->SetCollisionSolverAgent(m_CollisionSolver); + } +} + +void Workspace::LoadFloor( const char* p3dfilename ) +{ + if ( m_DrawableFloor ) + m_DrawableFloor->Release(); + + if ( m_SimStateFloor ) + m_SimStateFloor->Release(); + + //check that a data file exist + FILE* p = fopen( p3dfilename , "r" ); + if ( p ) + { + p3d::inventory->RemoveAllElements(); + + (void) p3d::load(p3dfilename); + + m_DrawableFloor = p3d::find<tDrawable>("floorShape"); + if ( m_DrawableFloor ) + m_DrawableFloor->AddRef(); + + fclose(p); + } +} + +void Workspace::ResetAll(bool emptyInventory) +{ + if (emptyInventory) + { + delete m_DrawableIterator; + delete m_ObjectFactoryIterator; + delete m_CStatePropDataIterator; + + p3d::inventory->RemoveAllElements(); + } + + ResetProp(); + + + if ( m_CollisionSolver ) + { + m_CollisionSolver->Release(); + m_CollisionSolver = NULL; + } + + if ( m_CollisionManager ) + { + m_CollisionManager->ResetAll(); + m_CollisionManager->Release(); + m_CollisionManager = NULL; + } + + this->Init(); +} + +void Workspace::Advance(float dt_ms) +{ + g_TotalTime_sec += dt_ms / 1000.f; + float inDt_Sec = dt_ms / 1000.f; + + if ( !g_IsPaused ) + { + if ( m_CStateProp ) + { + m_CStateProp->Update(dt_ms); + } + if ( m_CollisionManager ) + { + m_CollisionManager->Update( inDt_Sec , g_TotalTime_sec ); + } + } +} + +void Workspace::Display(tContext* context) +{ + if ( m_DrawableFloor ) + { + m_DrawableFloor->Display(); + } + + if ( m_CStateProp ) + { + m_CStateProp->UpdateFrameControllersForRender(); + m_CStateProp->Render(); + } + + if ( g_DrawCollision ) + { + sim::DisplayCollisionObjects(sim::CollisionManager::GetInstance()); + } +} + +void Workspace::ResetProp() +{ + if ( m_CStateProp ) + { + m_CStateProp->Release(); + } + + m_CStateProp = NULL; + g_CStateProp = NULL; +} + +int Workspace::Load( const char* name ) +{ + ResetAll(); + + (void) p3d::load(name); + + //Search for object factories + m_ObjectFactoryIterator->First(); + m_CStatePropDataIterator->First(); + + if ( m_ObjectFactoryIterator->Current() && m_CStatePropDataIterator->Current() ) + { + //if we have an objectfactory and a prop we are good (1 file with all chunks) + CStatePropData* statePropData = ((CStatePropData*)m_CStatePropDataIterator->Current()); + m_CStateProp = CStateProp::CreateCStateProp( statePropData , 0 ); + m_CStateProp->AddRef(); + } + else if( m_ObjectFactoryIterator->Current() ) + { + //if we just have the factory we need the file with the prop data so load it + char buf[256]; + memcpy( buf , name , strlen(name) - strlen(".p3d") ); + buf[strlen(name) - strlen(".p3d")] = '\0'; + strcat(buf , c_StatePropExtension ); + + //check that a data file exist + FILE* p = fopen( buf , "r" ); + if ( p ) + { + (void) p3d::load(buf); + + m_CStatePropDataIterator->First(); + if ( m_CStatePropDataIterator->Current() ) + { + //if we have an objectfactory and a prop we are good (1 file with all chunks) + CStatePropData* statePropData = ((CStatePropData*)m_CStatePropDataIterator->Current()); + m_CStateProp = CStateProp::CreateCStateProp( statePropData , 0 ); + m_CStateProp->AddRef(); + } + fclose(p); + } + else + { + //Create a new prop + CStatePropData* statePropData = new CStatePropData( (tAnimatedObjectFactory*)m_ObjectFactoryIterator->Current() ); + if ( statePropData ) + { + m_CStateProp = CStateProp::CreateCStateProp( statePropData , 0 ); + m_CStateProp->AddRef(); + } + } + } + else if( m_CStatePropDataIterator->Current() ) + { + //if we just have the prop we need the file with the factory + char buf[256]; + memcpy( buf , name , strlen(name) - strlen(c_StatePropExtension) ); + buf[strlen(name) - strlen(c_StatePropExtension)] = '\0'; + strcat(buf , ".p3d"); + + //check that a data file exist + FILE* p = fopen( buf , "r" ); + if ( p ) + { + (void) p3d::load(buf); + + m_ObjectFactoryIterator->First(); + if ( m_ObjectFactoryIterator->Current() ) + { + CStatePropData* statePropData = ((CStatePropData*)m_CStatePropDataIterator->Current()); + m_CStateProp = CStateProp::CreateCStateProp( statePropData , 0 ); + m_CStateProp->AddRef(); + } + fclose(p); + } + else + { + //no file associated with this prop data... + ResetAll(); + } + } + + if ( m_CStateProp ) + { + g_CStateProp = m_CStateProp; + } + else + { + g_CStateProp = NULL; + } + + + return 1; +} + + +//============================================================================= +// CStateProp - DLL interface +//============================================================================= +//Load a pure3D file with art for the background=============================== +int SP_CALLCONV SPLoadBackground( const char* filename ) +{ + if ( g_Workspace ) + { + g_Workspace->LoadFloor( filename ); + return 1; + } + return 0; +} + +//Load pure3D file ============================================================ +int SP_CALLCONV SPLoad( const char* filename ) +{ + if ( g_Workspace ) + { + g_Workspace->Load( filename ); + return 1; + } + return 0; +} + +//Export the SmartPropData ==================================================== +int SP_CALLCONV SPExportStatePropData( const char* filename ) +{ + if ( g_CStateProp ) + { + char buf[256]; + memcpy( buf , filename , strlen(filename) - strlen(".p3d") ); + buf[strlen(filename) - strlen(".p3d")] = '\0'; + strcat( buf , c_StatePropExtension ); + g_CStateProp->ExportChunk( buf ); + return 1; + } + return 0; +} + +//Display collision ========================================================== +int SP_CALLCONV SPShowCollision( int show ) +{ + g_DrawCollision = ( show == 1 ); + return 1; +} + +//Prop name =================================================================== +const char* SP_CALLCONV SPGetPropName() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetCStatePropData()->GetName(); + } + return NULL; +} + +//advance ==================================================================== +int SP_CALLCONV SPPause( bool b ) +{ + g_IsPaused = b; + return 1; +} +int SP_CALLCONV SPAdvanceOneFrame() +{ + if ( g_CStateProp ) + { + g_CStateProp->Update( 100.f ); + return 1; + } + return 0; +} +int SP_CALLCONV SPBackOneFrame() +{ + if ( g_CStateProp ) + { + g_CStateProp->Update( -100.f ); + return 1; + } + return 0; +} + +// State Data ================================================================= +unsigned int SP_CALLCONV SPGetNumberOfStates() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetCStatePropData()->GetNumberOfStates(); + } + return 0; +} + +int SP_CALLCONV SPInsertState( unsigned int state ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->InsertState( state ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPDeleteState( unsigned int state ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->DeleteState( state ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} + +int SP_CALLCONV SPGetCurrentState() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetState(); + } + return 0; +} +int SP_CALLCONV SPNextState() +{ + if ( g_CStateProp ) + { + g_CStateProp->NextState(); + return 1; + } + return 0; +} +int SP_CALLCONV SPPrevState() +{ + if ( g_CStateProp ) + { + g_CStateProp->PrevState(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetState( unsigned int state ) +{ + if ( g_CStateProp ) + { + g_CStateProp->SetState( state ); + return 1; + } + return 0; +} + +//Transition Data ============================================================= +bool SP_CALLCONV SPGetTransitionData( int state , TransitionData* transitionData ) +{ + if ( g_CStateProp ) + { + transitionData->autoTransition = g_CStateProp->GetCStatePropData()->GetTransitionData( state ).autoTransition; + transitionData->onFrame = g_CStateProp->GetCStatePropData()->GetTransitionData( state ).onFrame; + transitionData->toState = g_CStateProp->GetCStatePropData()->GetTransitionData( state ).toState; + return true; + } + return false; +} +int SP_CALLCONV SPSetAutoTransition( int state, bool b ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetAutoTransition( state , b ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetAutoTransitionOnFrame( int state, float onFrame ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetAutoTransitionOnFrame( state , onFrame ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetAutoTransitionToState( int state, int toState ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetAutoTransitionToState( state , toState ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} + +//Visibility Data ============================================================= +bool SP_CALLCONV SPGetVisibilityData( int state , int index , VisibilityData* visibilityData ) +{ + if ( g_CStateProp ) + { + visibilityData->isVisible = g_CStateProp->GetCStatePropData()->GetVisibilityData( state , index ).isVisible; + return true; + } + return false; +} +int SP_CALLCONV SPSetVisible( int state , int index , bool b ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetVisible( state , index , b ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetAllVisibilities( int state , bool b ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetAllVisibilities( state , b ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPShowAll(int state) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->ShowAll( state ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPHideAll(int state) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->HideAll( state ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} + +SP_IMPORT int SP_CALLCONV SPGetNumDrawables() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetNumberOfDrawableElements(); + } + return 0; +} + +const char* SP_CALLCONV SPGetDrawableName( int index ) +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetDrawableName( index ); + } + return NULL; +} + +//Frame Controller Data ======================================================= +bool SPGetFrameControllerData( int state, int fc , FrameControllerData* fcData ) +{ + if ( g_CStateProp ) + { + fcData->holdFrame = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).holdFrame; + fcData->isCyclic = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).isCyclic; + fcData->maxFrame = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).maxFrame; + fcData->minFrame = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).minFrame; + fcData->numberOfCycles = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).numberOfCycles; + fcData->relativeSpeed = g_CStateProp->GetCStatePropData()->GetFrameControllerData( state , fc ).relativeSpeed; + return true; + } + return false; +} +int SP_CALLCONV SPSetCyclic( int state ,int fc, bool isCyclic ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetCyclic( state , fc , isCyclic ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetRelativeSpeed( int state ,int fc, float speed ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetRelativeSpeed( state , fc , speed ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetFrameRange( int state ,int fc, float min, float max ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetFrameRange( state , fc , min , max ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetHoldFrame( int state , int fc , bool holdFrame ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetHoldFrame( state , fc , holdFrame ); + g_CStateProp->UpdateOnDataEdit(); + return 1; + } + return 0; +} +int SP_CALLCONV SPSetNumberOfCycles( int state , int fc , unsigned int numberOfCycles ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->SetNumberOfCycles( state , fc , numberOfCycles ); + return 1; + } + return 0; +} + +int SP_CALLCONV SPGetNumFrameControllers() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetNumberOfFrameControllers(); + } + return 0; +} +float SP_CALLCONV SPGetBaseFrameControllerFrame() +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetBaseFrameControllerFrame(); + } + return 0.f; +} +float SP_CALLCONV SPGetFrameControllerFrame( int index ) +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetFrameControllerByIndex( index )->GetFrame(); + } + return 0.f; +} +const char* SP_CALLCONV SPGetFrameControllerName( int index ) +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetFrameControllerByIndex( index )->GetName(); + } + return NULL; +} + +//Event Data ================================================================== +unsigned int SP_CALLCONV SPGetNumberOfEvents( int state ) +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetCStatePropData()->GetNumberOfEvents( state ); + } + return 0; +} +bool SP_CALLCONV SPGetEventData( int state , int eventindex , EventData *eventData) +{ + if ( g_CStateProp ) + { + EventData ed = g_CStateProp->GetCStatePropData()->GetEventData( state , eventindex ); + eventData->eventID = ed.eventID; + strcpy( eventData->eventName , ed.eventName ); + eventData->toState = ed.toState; + return true; + } + return false; +} +int SP_CALLCONV SPAddEvent( const char* event , int eventEnum , int toState , int fromState ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->AddEvent( event , eventEnum , toState , fromState ); + return 1; + } + return 0; +} +int SP_CALLCONV SPEditEvent( int state, int EventIndex, char* eventName, int eventEnum , int toState ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->EditEvent( state , EventIndex , eventName , eventEnum , toState ); + return 1; + } + return 0; +} +int SP_CALLCONV SPDeleteEvent( int fromState , int index ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->DeleteEvent( fromState , index ); + return 1; + } + return 0; +} + +//Callback Data =============================================================== +unsigned int SP_CALLCONV SPGetNumberOfCallbacks( int state ) +{ + if ( g_CStateProp ) + { + return g_CStateProp->GetCStatePropData()->GetNumberOfCallbacks( state ); + } + return 0; +} +bool SP_CALLCONV SPGetCallbackData( int state , int index , CallbackData* callbackData ) +{ + if ( g_CStateProp ) + { + callbackData->callbackID = g_CStateProp->GetCStatePropData()->GetCallbackData( state , index ).callbackID; + strcpy( callbackData->callbackName , g_CStateProp->GetCStatePropData()->GetCallbackData( state , index ).callbackName ); + callbackData->onFrame = g_CStateProp->GetCStatePropData()->GetCallbackData( state , index ).onFrame; + return true; + } + return false; +} +int SP_CALLCONV SPAddCallback( int state , const char* event , int eventEnum , float frame ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->AddCallback( state , event , eventEnum , frame ); + return 1; + } + return 0; +} +int SP_CALLCONV SPEditCallback( int state, int CBIndex, char* eventname, int eventEnum , float frame ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->EditCallback( state , CBIndex , eventname , eventEnum , frame ); + return 1; + } + return 0; +} +int SP_CALLCONV SPDeleteCallback( int state , int index ) +{ + if ( g_CStateProp ) + { + g_CStateProp->GetCStatePropData()->DeleteCallback( state , index ); + return 1; + } + return 0; +}
\ No newline at end of file diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.hpp new file mode 100644 index 0000000..e476ebf --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/engine/workspace.hpp @@ -0,0 +1,67 @@ +#ifndef _WORKSPACE_HPP_ +#define _WORKSPACE_HPP_ + +#include <radmath/radmath.hpp> +#include <simcollision/collisionmanager.hpp> + +#include "aicollisionsolveragent.hpp" + +class CStateProp; +class tDrawable; + +//============================================================================= +// Class Declarations +// ViewerIterator +//============================================================================= +class ViewerIterator +{ +public: + virtual ~ViewerIterator() {} + virtual tEntity* Current(void) = 0; + virtual tEntity* Next(bool loop = false) = 0; + virtual tEntity* Prev(void) = 0; + virtual tEntity* First(void) = 0; +}; + + +//============================================================================= +// Class Declarations +// Workspace +//============================================================================= +class Workspace : public tRefCounted +{ +public: + Workspace(); + ~Workspace(); + + void Init(); + void ResetAll( bool emptyInventory = true ); + void Advance(float dt_ms); + void Display(tContext* context); + + int Load( const char* name ); + int Pause(bool b); + + void LoadFloor( const char* p3dfilename ); + +private: + + void ResetProp(); + CStateProp* m_CStateProp; + + AICollisionSolverAgent *m_CollisionSolver; + sim::CollisionManager* m_CollisionManager; + + ViewerIterator* m_DrawableIterator; + ViewerIterator* m_ObjectFactoryIterator; + ViewerIterator* m_CStatePropDataIterator; + + tDrawable* m_DrawableFloor; + sim::SimState* m_SimStateFloor; + + char m_Path[256]; +}; + + + +#endif diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/interface/base.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/base.hpp new file mode 100644 index 0000000..dd8fe32 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/base.hpp @@ -0,0 +1,25 @@ +/* + * fv/interface/base.hpp + */ + + +#ifndef SP_INTERFACE_BASE_HPP +#define SP_INTERFACE_BASE_HPP + + +#define WIN32_LEAN_AND_MEAN +#define WIN32_EXTRA_LEAN +#include <windows.h> + + +#ifdef SMARTPROP_ENGINE +# define SP_IMPORT __declspec(dllexport) +#else +# define SP_IMPORT __declspec(dllimport) +#endif + + +#define SP_CALLCONV __cdecl + + +#endif // SP_INTERFACE_BASE_HPP diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/interface/context.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/context.hpp new file mode 100644 index 0000000..72da9a0 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/context.hpp @@ -0,0 +1,50 @@ +/* + * sp/interface/context.hpp + */ + + +#ifndef SP_INTERFACE_CONTEXT_HPP +#define SP_INTERFACE_CONTEXT_HPP + +#include <sp/interface/base.hpp> + + +extern "C" +{ + + SP_IMPORT int SP_CALLCONV SPContextOpen(HWND hwnd); + SP_IMPORT int SP_CALLCONV SPContextClose(); + + SP_IMPORT int SP_CALLCONV SPContextViewResize(int w, int h); + + SP_IMPORT int SP_CALLCONV SPContextIsPDDIStatsEnabled(); + SP_IMPORT int SP_CALLCONV SPContextSetIsPDDIStatsEnabled(int statsEnabled); + + SP_IMPORT int SP_CALLCONV SPContextAdvance(); + SP_IMPORT int SP_CALLCONV SPContextDisplay(); + + SP_IMPORT int SP_CALLCONV SPContextMouseDown(int button, int shift, int x, int y); + SP_IMPORT int SP_CALLCONV SPContextMouseMove(int button, int shift, int x, int y); + SP_IMPORT int SP_CALLCONV SPContextMouseUp(int button, int shift, int x, int y); + SP_IMPORT int SP_CALLCONV SPContextMouseWheel(int scroll); + + SP_IMPORT float SP_CALLCONV SPSimulationGetFPS(); + SP_IMPORT float SP_CALLCONV SPSimulationGetRate(); + SP_IMPORT int SP_CALLCONV SPSimulationSetRate(float rate); + + SP_IMPORT unsigned int SP_CALLCONV SPGetMemoryUsage(); + + SP_IMPORT int SP_CALLCONV SPContextGetCameraLock(); + SP_IMPORT int SP_CALLCONV SPContextSetCameraLock(int cameraLock); + + SP_IMPORT int SP_CALLCONV SPInventoryClear(); + SP_IMPORT int SP_CALLCONV SPInventoryGetEntityCount(); + SP_IMPORT int SP_CALLCONV SPInventoryGetEntityName(int index, char* name, int nameLen, char* type, int typeLen); + + SP_IMPORT int SP_CALLCONV SPSetBackgroundColour( int r , int g , int b ); + + +} // extern "C" + + +#endif // SP_INTERFACE_CONTEXT_HPP diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/interface/platform.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/platform.hpp new file mode 100644 index 0000000..8a2ba13 --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/platform.hpp @@ -0,0 +1,24 @@ +/* + * fv/interface/platform.hpp + */ + + +#ifndef SP_INTERFACE_PLATFORM_HPP +#define SP_INTERFACE_PLATFORM_HPP + + +#include <sp/interface/base.hpp> + + +extern "C" +{ + + +SP_IMPORT int SP_CALLCONV SPPlatformOpen(HWND hwnd); +SP_IMPORT int SP_CALLCONV SPPlatformClose(); + + +} // extern "C" + + +#endif // SP_INTERFACE_PLATFORM_HPP diff --git a/tools/statepropbuilder/apps/spbuilder/code/sp/interface/workspace.hpp b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/workspace.hpp new file mode 100644 index 0000000..210ac8a --- /dev/null +++ b/tools/statepropbuilder/apps/spbuilder/code/sp/interface/workspace.hpp @@ -0,0 +1,89 @@ +/* + * fv/interface/platform.hpp + */ + +#ifndef SP_INTERFACE_WORKSPACE_HPP +#define SP_INTERFACE_WORKSPACE_HPP + +#include <sp/interface/base.hpp> +#include <sp/engine/statepropdatatypes.hpp> + +extern "C" +{ + //Load Background ============================================================= + SP_IMPORT int SP_CALLCONV SPLoadBackground( const char* filename ); + + //Load ======================================================================== + SP_IMPORT int SP_CALLCONV SPLoad( const char* filename ); + + //Export ====================================================================== + SP_IMPORT int SP_CALLCONV SPExportStatePropData( const char* filename ); + + //Draw collision ============================================================== + SP_IMPORT int SP_CALLCONV SPShowCollision( int show ); + + //Prop name =================================================================== + SP_IMPORT const char* SP_CALLCONV SPGetPropName(); + + //Advance ===================================================================== + SP_IMPORT int SP_CALLCONV SPPause( bool b ); + SP_IMPORT int SP_CALLCONV SPAdvanceOneFrame(); + SP_IMPORT int SP_CALLCONV SPBackOneFrame(); + + // State Data ================================================================= + SP_IMPORT unsigned int SP_CALLCONV SPGetNumberOfStates(); + SP_IMPORT int SP_CALLCONV SPInsertState( unsigned int state ); + SP_IMPORT int SP_CALLCONV SPDeleteState( unsigned int state ); + + SP_IMPORT int SP_CALLCONV SPGetCurrentState(); + SP_IMPORT int SP_CALLCONV SPNextState(); + SP_IMPORT int SP_CALLCONV SPPrevState(); + SP_IMPORT int SP_CALLCONV SPSetState( unsigned int state ); + + //Transition Data ============================================================= + SP_IMPORT bool SP_CALLCONV SPGetTransitionData( int state , TransitionData* transitionData ); + SP_IMPORT int SP_CALLCONV SPSetAutoTransition( int state, bool b ); + SP_IMPORT int SP_CALLCONV SPSetAutoTransitionOnFrame( int state, float onFrame ); + SP_IMPORT int SP_CALLCONV SPSetAutoTransitionToState( int state, int toState ); + + //Visibility Data ============================================================= + SP_IMPORT bool SP_CALLCONV SPGetVisibilityData( int state , int index , VisibilityData* visibilityData ); + SP_IMPORT int SP_CALLCONV SPSetVisible( int state , int index , bool b ); + SP_IMPORT int SP_CALLCONV SPSetAllVisibilities( int state , bool b ); + SP_IMPORT int SP_CALLCONV SPShowAll(int state); + SP_IMPORT int SP_CALLCONV SPHideAll(int state); + + SP_IMPORT int SP_CALLCONV SPGetNumDrawables(); + SP_IMPORT const char* SP_CALLCONV SPGetDrawableName( int index ); + + //Frame Controller Data ======================================================= + SP_IMPORT bool SPGetFrameControllerData( int state, int fc , FrameControllerData* fcData ); + SP_IMPORT int SP_CALLCONV SPSetCyclic( int state ,int fc, bool isCyclic ); + SP_IMPORT int SP_CALLCONV SPSetRelativeSpeed( int state ,int fc, float speed ); + SP_IMPORT int SP_CALLCONV SPSetFrameRange( int state ,int fc, float min, float max ); + SP_IMPORT int SP_CALLCONV SPSetHoldFrame( int state , int fc , bool holdFrame ); + SP_IMPORT int SP_CALLCONV SPSetNumberOfCycles( int state , int fc , unsigned int numberOfCycles ); + + SP_IMPORT int SP_CALLCONV SPGetNumFrameControllers(); + SP_IMPORT float SP_CALLCONV SPGetBaseFrameControllerFrame(); + SP_IMPORT float SP_CALLCONV SPGetFrameControllerFrame( int index ); + SP_IMPORT const char* SP_CALLCONV SPGetFrameControllerName( int index ); + + //Event Data ================================================================== + SP_IMPORT unsigned int SP_CALLCONV SPGetNumberOfEvents( int state ); + SP_IMPORT bool SP_CALLCONV SPGetEventData( int state , int eventindex , EventData *eventData); + SP_IMPORT int SP_CALLCONV SPAddEvent( const char* event , int eventEnum , int toState , int fromState ); + SP_IMPORT int SP_CALLCONV SPEditEvent( int state, int EventIndex, char* eventName, int eventEnum , int toState ); + SP_IMPORT int SP_CALLCONV SPDeleteEvent( int fromState , int index ); + + //Callback Data =============================================================== + SP_IMPORT unsigned int SP_CALLCONV SPGetNumberOfCallbacks( int state ); + SP_IMPORT bool SP_CALLCONV SPGetCallbackData( int state , int index , CallbackData* callbackData ); + SP_IMPORT int SP_CALLCONV SPAddCallback( int state , const char* event , int eventEnum , float frame ); + SP_IMPORT int SP_CALLCONV SPEditCallback( int state, int CBIndex, char* eventname, int eventEnum , float frame ); + SP_IMPORT int SP_CALLCONV SPDeleteCallback( int state , int index ); +} + + +#endif // SP_INTERFACE_WORKSPACE_HPP + diff --git a/tools/statepropbuilder/art/BombBlloon.p3d b/tools/statepropbuilder/art/BombBlloon.p3d Binary files differnew file mode 100644 index 0000000..2077297 --- /dev/null +++ b/tools/statepropbuilder/art/BombBlloon.p3d diff --git a/tools/statepropbuilder/art/BombBlloon_spdata.p3d b/tools/statepropbuilder/art/BombBlloon_spdata.p3d Binary files differnew file mode 100644 index 0000000..a62b052 --- /dev/null +++ b/tools/statepropbuilder/art/BombBlloon_spdata.p3d diff --git a/tools/statepropbuilder/art/Bouncy_Ape.p3d b/tools/statepropbuilder/art/Bouncy_Ape.p3d Binary files differnew file mode 100644 index 0000000..90a12c0 --- /dev/null +++ b/tools/statepropbuilder/art/Bouncy_Ape.p3d diff --git a/tools/statepropbuilder/art/Bouncy_Ape_spdata.p3d b/tools/statepropbuilder/art/Bouncy_Ape_spdata.p3d Binary files differnew file mode 100644 index 0000000..56d5ab8 --- /dev/null +++ b/tools/statepropbuilder/art/Bouncy_Ape_spdata.p3d diff --git a/tools/statepropbuilder/art/air_pump_1.p3d b/tools/statepropbuilder/art/air_pump_1.p3d Binary files differnew file mode 100644 index 0000000..9ae0c3b --- /dev/null +++ b/tools/statepropbuilder/art/air_pump_1.p3d diff --git a/tools/statepropbuilder/art/air_pump_1_collision.p3d b/tools/statepropbuilder/art/air_pump_1_collision.p3d Binary files differnew file mode 100644 index 0000000..d0469a5 --- /dev/null +++ b/tools/statepropbuilder/art/air_pump_1_collision.p3d diff --git a/tools/statepropbuilder/art/air_pump_1_spdata.p3d b/tools/statepropbuilder/art/air_pump_1_spdata.p3d Binary files differnew file mode 100644 index 0000000..a92e52a --- /dev/null +++ b/tools/statepropbuilder/art/air_pump_1_spdata.p3d diff --git a/tools/statepropbuilder/art/ball_rebounder.p3d b/tools/statepropbuilder/art/ball_rebounder.p3d Binary files differnew file mode 100644 index 0000000..7c8325c --- /dev/null +++ b/tools/statepropbuilder/art/ball_rebounder.p3d diff --git a/tools/statepropbuilder/art/ball_rebounder_collision.p3d b/tools/statepropbuilder/art/ball_rebounder_collision.p3d Binary files differnew file mode 100644 index 0000000..0552a78 --- /dev/null +++ b/tools/statepropbuilder/art/ball_rebounder_collision.p3d diff --git a/tools/statepropbuilder/art/ball_rebounder_spdata.p3d b/tools/statepropbuilder/art/ball_rebounder_spdata.p3d Binary files differnew file mode 100644 index 0000000..5e59b10 --- /dev/null +++ b/tools/statepropbuilder/art/ball_rebounder_spdata.p3d diff --git a/tools/statepropbuilder/art/ball_target.p3d b/tools/statepropbuilder/art/ball_target.p3d Binary files differnew file mode 100644 index 0000000..71b1894 --- /dev/null +++ b/tools/statepropbuilder/art/ball_target.p3d diff --git a/tools/statepropbuilder/art/ball_target_spdata.p3d b/tools/statepropbuilder/art/ball_target_spdata.p3d Binary files differnew file mode 100644 index 0000000..48997fb --- /dev/null +++ b/tools/statepropbuilder/art/ball_target_spdata.p3d diff --git a/tools/statepropbuilder/art/barrel.p3d b/tools/statepropbuilder/art/barrel.p3d Binary files differnew file mode 100644 index 0000000..4206759 --- /dev/null +++ b/tools/statepropbuilder/art/barrel.p3d diff --git a/tools/statepropbuilder/art/barrel_collision.p3d b/tools/statepropbuilder/art/barrel_collision.p3d Binary files differnew file mode 100644 index 0000000..83ed542 --- /dev/null +++ b/tools/statepropbuilder/art/barrel_collision.p3d diff --git a/tools/statepropbuilder/art/barrel_spdata.p3d b/tools/statepropbuilder/art/barrel_spdata.p3d Binary files differnew file mode 100644 index 0000000..1aebe2f --- /dev/null +++ b/tools/statepropbuilder/art/barrel_spdata.p3d diff --git a/tools/statepropbuilder/art/big_gulp_of_pop.p3d b/tools/statepropbuilder/art/big_gulp_of_pop.p3d Binary files differnew file mode 100644 index 0000000..30c82b3 --- /dev/null +++ b/tools/statepropbuilder/art/big_gulp_of_pop.p3d diff --git a/tools/statepropbuilder/art/big_gulp_of_pop_spdata.p3d b/tools/statepropbuilder/art/big_gulp_of_pop_spdata.p3d Binary files differnew file mode 100644 index 0000000..778c19d --- /dev/null +++ b/tools/statepropbuilder/art/big_gulp_of_pop_spdata.p3d diff --git a/tools/statepropbuilder/art/biker_chick_temp.p3d b/tools/statepropbuilder/art/biker_chick_temp.p3d Binary files differnew file mode 100644 index 0000000..02a8679 --- /dev/null +++ b/tools/statepropbuilder/art/biker_chick_temp.p3d diff --git a/tools/statepropbuilder/art/biker_chick_temp_spdata.p3d b/tools/statepropbuilder/art/biker_chick_temp_spdata.p3d Binary files differnew file mode 100644 index 0000000..7be8b7c --- /dev/null +++ b/tools/statepropbuilder/art/biker_chick_temp_spdata.p3d diff --git a/tools/statepropbuilder/art/box_of_chips.p3d b/tools/statepropbuilder/art/box_of_chips.p3d Binary files differnew file mode 100644 index 0000000..fad2970 --- /dev/null +++ b/tools/statepropbuilder/art/box_of_chips.p3d diff --git a/tools/statepropbuilder/art/box_of_chips_spdata.p3d b/tools/statepropbuilder/art/box_of_chips_spdata.p3d Binary files differnew file mode 100644 index 0000000..40b8d00 --- /dev/null +++ b/tools/statepropbuilder/art/box_of_chips_spdata.p3d diff --git a/tools/statepropbuilder/art/box_wooden.p3d b/tools/statepropbuilder/art/box_wooden.p3d Binary files differnew file mode 100644 index 0000000..1df915a --- /dev/null +++ b/tools/statepropbuilder/art/box_wooden.p3d diff --git a/tools/statepropbuilder/art/box_wooden_spdata.p3d b/tools/statepropbuilder/art/box_wooden_spdata.p3d Binary files differnew file mode 100644 index 0000000..fd6fa29 --- /dev/null +++ b/tools/statepropbuilder/art/box_wooden_spdata.p3d diff --git a/tools/statepropbuilder/art/cage_collision.p3d b/tools/statepropbuilder/art/cage_collision.p3d Binary files differnew file mode 100644 index 0000000..bd93544 --- /dev/null +++ b/tools/statepropbuilder/art/cage_collision.p3d diff --git a/tools/statepropbuilder/art/cameraTrigger.p3d b/tools/statepropbuilder/art/cameraTrigger.p3d Binary files differnew file mode 100644 index 0000000..01ec9ad --- /dev/null +++ b/tools/statepropbuilder/art/cameraTrigger.p3d diff --git a/tools/statepropbuilder/art/camera_test.p3d b/tools/statepropbuilder/art/camera_test.p3d Binary files differnew file mode 100644 index 0000000..a4e70ac --- /dev/null +++ b/tools/statepropbuilder/art/camera_test.p3d diff --git a/tools/statepropbuilder/art/camera_test_collision.p3d b/tools/statepropbuilder/art/camera_test_collision.p3d Binary files differnew file mode 100644 index 0000000..827d415 --- /dev/null +++ b/tools/statepropbuilder/art/camera_test_collision.p3d diff --git a/tools/statepropbuilder/art/camera_test_spdata.p3d b/tools/statepropbuilder/art/camera_test_spdata.p3d Binary files differnew file mode 100644 index 0000000..aaa8c80 --- /dev/null +++ b/tools/statepropbuilder/art/camera_test_spdata.p3d diff --git a/tools/statepropbuilder/art/carney_A.p3d b/tools/statepropbuilder/art/carney_A.p3d Binary files differnew file mode 100644 index 0000000..1122f49 --- /dev/null +++ b/tools/statepropbuilder/art/carney_A.p3d diff --git a/tools/statepropbuilder/art/carney_A_collisions.p3d b/tools/statepropbuilder/art/carney_A_collisions.p3d Binary files differnew file mode 100644 index 0000000..813a25a --- /dev/null +++ b/tools/statepropbuilder/art/carney_A_collisions.p3d diff --git a/tools/statepropbuilder/art/carney_A_spdata.p3d b/tools/statepropbuilder/art/carney_A_spdata.p3d Binary files differnew file mode 100644 index 0000000..6d1ec2f --- /dev/null +++ b/tools/statepropbuilder/art/carney_A_spdata.p3d diff --git a/tools/statepropbuilder/art/carney_stall_1.p3d b/tools/statepropbuilder/art/carney_stall_1.p3d Binary files differnew file mode 100644 index 0000000..ba8af88 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_1.p3d diff --git a/tools/statepropbuilder/art/carney_stall_1_collision.p3d b/tools/statepropbuilder/art/carney_stall_1_collision.p3d Binary files differnew file mode 100644 index 0000000..8792c08 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_1_collision.p3d diff --git a/tools/statepropbuilder/art/carney_stall_1_spdata.p3d b/tools/statepropbuilder/art/carney_stall_1_spdata.p3d Binary files differnew file mode 100644 index 0000000..b4186f0 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_1_spdata.p3d diff --git a/tools/statepropbuilder/art/carney_stall_2.p3d b/tools/statepropbuilder/art/carney_stall_2.p3d Binary files differnew file mode 100644 index 0000000..e57b0b2 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_2.p3d diff --git a/tools/statepropbuilder/art/carney_stall_2_collision.p3d b/tools/statepropbuilder/art/carney_stall_2_collision.p3d Binary files differnew file mode 100644 index 0000000..3c73667 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_2_collision.p3d diff --git a/tools/statepropbuilder/art/carney_stall_2_spdata.p3d b/tools/statepropbuilder/art/carney_stall_2_spdata.p3d Binary files differnew file mode 100644 index 0000000..6b7dfb4 --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_2_spdata.p3d diff --git a/tools/statepropbuilder/art/carney_stall_2_spdata_spdata.p3d b/tools/statepropbuilder/art/carney_stall_2_spdata_spdata.p3d Binary files differnew file mode 100644 index 0000000..136a89d --- /dev/null +++ b/tools/statepropbuilder/art/carney_stall_2_spdata_spdata.p3d diff --git a/tools/statepropbuilder/art/stateprop.p3d b/tools/statepropbuilder/art/stateprop.p3d Binary files differnew file mode 100644 index 0000000..d81b1ee --- /dev/null +++ b/tools/statepropbuilder/art/stateprop.p3d diff --git a/tools/statepropbuilder/art/weapon.p3d b/tools/statepropbuilder/art/weapon.p3d Binary files differnew file mode 100644 index 0000000..8c5c9ce --- /dev/null +++ b/tools/statepropbuilder/art/weapon.p3d diff --git a/tools/statepropbuilder/build/win32/stateprop.dsp b/tools/statepropbuilder/build/win32/stateprop.dsp new file mode 100644 index 0000000..b6e2fe2 --- /dev/null +++ b/tools/statepropbuilder/build/win32/stateprop.dsp @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="stateprop" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=stateprop - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "stateprop.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "stateprop.mak" CFG="stateprop - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "stateprop - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "stateprop - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "stateprop" +# PROP Scc_LocalPath "..\..\.." +CPP=snCl.exe +RSC=rc.exe + +!IF "$(CFG)" == "stateprop - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../pure3d" /I "../../../radmath" /I "../../../radcore/inc" /I "../../../radcontent/inc" /I "../../../stateprop/inc" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "RAD_RELEASE" /D "RAD_PC" /D "RAD_WIN32" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=snLib.exe +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "stateprop - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /ZI /Od /I "../../../pure3d" /I "../../../radmath" /I "../../../radcore/inc" /I "../../../radcontent/inc" /I "../../../stateprop/inc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "RAD_DEBUG" /D "RAD_PC" /D "RAD_WIN32" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=snLib.exe +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "stateprop - Win32 Release" +# Name "stateprop - Win32 Debug" +# Begin Group "src" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\stateprop.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\inc\stateprop\stateprop.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\statepropdata.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\inc\stateprop\statepropdata.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\inc\stateprop\statepropdatatypes.hpp +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/statepropbuilder/inc/stateprop/stateprop.hpp b/tools/statepropbuilder/inc/stateprop/stateprop.hpp new file mode 100644 index 0000000..4c0c766 --- /dev/null +++ b/tools/statepropbuilder/inc/stateprop/stateprop.hpp @@ -0,0 +1,86 @@ +#ifndef _STATEPROP_HPP_ +#define _STATEPROP_HPP_ + +#include <radmath/radmath.hpp> + +#include <p3d/anim/compositedrawable.hpp> + +//============================================================================= +// Forward Class/Struct Declarations +//============================================================================= + +class tFrameController; +class tAnimatedObject; +class CStatePropData; +class CStateProp; + + +//============================================================================= +// Class Declarations +// PropListener +//============================================================================= + +class CStatePropListener +{ +public: + virtual void RecieveEvent( int callback , CStateProp* stateProp ) = 0; +}; + +//============================================================================= +// Definitions +//============================================================================= +#define MAX_LISTENERS 10 + +const int STATEPROP_CHANGE_STATE_EVENT = -1; + +//============================================================================= +// Class Declarations +// CStateProp +//============================================================================= +class CStateProp : public tEntity +{ +public: + + //Static function to create a new CStateProp instance + static CStateProp* CreateStateProp( CStatePropData* statePropData , unsigned int state = 0 ); + + CStateProp( tAnimatedObject* animatedObject , CStatePropData* statePropData , unsigned int state = 0 ); + ~CStateProp(); + + //Per frame update + void Update( float dt ); + + //call before render + void UpdateFrameControllersForRender(); + + unsigned int GetState(); + void SetState( unsigned int state ); + void NextState(); + void PrevState(); + + void OnEvent( unsigned int eventID ); + + void AddStatePropListener( CStatePropListener* statePropListener ); + void RemoveStatePropListener( CStatePropListener* statePropListener ); + + tDrawable* GetDrawable(); + +private: + + //accessor helpers + unsigned int GetNumberOfFrameControllers(); + tFrameController* GetFrameControllerByIndex( unsigned int i ); + unsigned int GetNumberOfDrawableElements(); + tCompositeDrawable::DrawableElement* GetDrawableElement( unsigned int i ); + + //Private members + CStatePropData* m_StatePropData; + tAnimatedObject* m_AnimatedObject; + tFrameController* m_BaseFrameController; + unsigned int m_CurrentState; + + unsigned int m_NumStatePropListeners; + CStatePropListener* m_StatePropListener[MAX_LISTENERS]; +}; + +#endif //_STATEPROP_HPP_
\ No newline at end of file diff --git a/tools/statepropbuilder/inc/stateprop/statepropdata.hpp b/tools/statepropbuilder/inc/stateprop/statepropdata.hpp new file mode 100644 index 0000000..b454f34 --- /dev/null +++ b/tools/statepropbuilder/inc/stateprop/statepropdata.hpp @@ -0,0 +1,99 @@ +#ifndef _STATEPROPDATA_HPP_ +#define _STATEPROPDATA_HPP_ + + +#include <radmath/radmath.hpp> +#include <p3d/loadmanager.hpp> + +#include "stateprop/statepropdatatypes.hpp" + +//============================================================================= +// Forward Class/Struct Declarations +//============================================================================= + +class CStateProp; +class tAnimatedObjectFactory; +class CStatePropDataLoader; + +//============================================================================= +// Definitions +//============================================================================= + +//State data +struct StateData +{ + TransitionData transitionData; + VisibilityData* visibilityData; + FrameControllerData* frameControllerData; + EventData* eventData; + CallbackData* callbackData; + + unsigned int numEvents; + unsigned int numCallbacks; +}; + +//============================================================================= +// Class Declarations +// Prop +//============================================================================= + +class CStatePropData : public tEntity +{ + +public: + + friend class CStatePropDataLoader; + + CStatePropData(); + ~CStatePropData(); + + // State Data ===================================================================================== + unsigned int GetNumberOfStates(); + StateData GetStateData( unsigned int state ); + + //Transition Data ================================================================================== + TransitionData GetTransitionData( int state ); + + //Visibility Data ================================================================================== + VisibilityData GetVisibilityData( int state , int index); + + //Frame Controller Data ============================================================================= + FrameControllerData GetFrameControllerData( int state, int fc ); + + //Event Data ======================================================================================== + unsigned int GetNumberOfEvents( int state ); + EventData GetEventData( int state , int eventindex ); + + //Callback Data ====================================================================================== + unsigned int GetNumberOfCallbacks( int state ); + CallbackData GetCallbackData( int state , int eventindex ); + + tAnimatedObjectFactory* GetAnimatedObjectFactory() { return m_ObjectFactory; } + +private: + + //animated object factory + char m_FactoryName[64]; + tAnimatedObjectFactory* m_ObjectFactory; + + //total number of states + unsigned int m_NumStates; + StateData** m_StateData; +}; + + +//============================================================================= +// Class Declarations +// PropLoader +//============================================================================= +class CStatePropDataLoader : public tSimpleChunkHandler +{ +public: + CStatePropDataLoader(); + tEntity* LoadObject(tChunkFile* file, tEntityStore* store); + +protected: + ~CStatePropDataLoader() {}; +}; + +#endif //_STATEPROPDATA_HPP_ diff --git a/tools/statepropbuilder/inc/stateprop/statepropdatatypes.hpp b/tools/statepropbuilder/inc/stateprop/statepropdatatypes.hpp new file mode 100644 index 0000000..4d035af --- /dev/null +++ b/tools/statepropbuilder/inc/stateprop/statepropdatatypes.hpp @@ -0,0 +1,45 @@ +#ifndef _STATEPROPDATATYPES_HPP_ +#define _STATEPROPDATATYPES_HPP_ + +//Transition data +struct TransitionData +{ + unsigned int autoTransition; + unsigned int toState; + float onFrame; +}; + +//Visibility data +struct VisibilityData +{ + unsigned int isVisible; +}; + +//Frame controller data +struct FrameControllerData +{ + unsigned int isCyclic; + unsigned int numberOfCycles; + unsigned int holdFrame; + float minFrame; + float maxFrame; + float relativeSpeed; +}; + +//Event data +struct EventData +{ + char eventName[64]; + unsigned int eventID; + unsigned int toState; +}; + +//Callback data +struct CallbackData +{ + char callbackName[64]; + unsigned int callbackID; + float onFrame; +}; + +#endif //_STATEPROPDATATYPES_HPP_ diff --git a/tools/statepropbuilder/lib/dummy.txt b/tools/statepropbuilder/lib/dummy.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tools/statepropbuilder/lib/dummy.txt diff --git a/tools/statepropbuilder/lib/stateproppd.a b/tools/statepropbuilder/lib/stateproppd.a Binary files differnew file mode 100644 index 0000000..e95eb24 --- /dev/null +++ b/tools/statepropbuilder/lib/stateproppd.a diff --git a/tools/statepropbuilder/lib/stateproppt.a b/tools/statepropbuilder/lib/stateproppt.a Binary files differnew file mode 100644 index 0000000..a4e67f5 --- /dev/null +++ b/tools/statepropbuilder/lib/stateproppt.a diff --git a/tools/statepropbuilder/src/stateprop.cpp b/tools/statepropbuilder/src/stateprop.cpp new file mode 100644 index 0000000..fed8204 --- /dev/null +++ b/tools/statepropbuilder/src/stateprop.cpp @@ -0,0 +1,299 @@ +#include <p3d/utility.hpp> +#include <p3d/anim/multicontroller.hpp> +#include <p3d/anim/compositedrawable.hpp> +#include <p3d/anim/animatedobject.hpp> +#include <p3d/anim/animate.hpp> + +#include "stateprop/stateprop.hpp" +#include "stateprop/statepropdata.hpp" + +CStateProp* CStateProp::CreateStateProp( CStatePropData* statePropData , unsigned int state ) +{ + tAnimatedObjectFactory* objectFactory = statePropData->GetAnimatedObjectFactory(); + + P3DASSERT( objectFactory ); + + if ( objectFactory ) + { + tAnimatedObject* animatedObject = objectFactory->CreateObject(NULL); + CStateProp* stateProp = new CStateProp( animatedObject , statePropData , state ); + stateProp->SetName( statePropData->GetName() ); + return stateProp; + } + + return NULL; +} + +CStateProp::CStateProp( tAnimatedObject* animatedObject , CStatePropData* statePropData , unsigned int state ) : + m_StatePropData( NULL ), + m_AnimatedObject( NULL ), + m_BaseFrameController( NULL ), + m_CurrentState( state ), + m_NumStatePropListeners( 0 ) +{ + //set state data + P3DASSERT( statePropData ); + m_StatePropData = statePropData; + m_StatePropData->AddRef(); + + //set animated object + P3DASSERT( animatedObject ); + m_AnimatedObject = animatedObject; + m_AnimatedObject->AddRef(); + + //base frame controller is run in milliseconds (ie the 1 is the timer) + m_BaseFrameController = new tMultiController(0 , 1000.f); + m_BaseFrameController->AddRef(); + m_BaseFrameController->Reset(); + + //initialize the state + SetState( state ); +} + +CStateProp::~CStateProp() +{ + if ( m_BaseFrameController ) + m_BaseFrameController->Release(); + if ( m_StatePropData ) + m_StatePropData->Release(); + if ( m_AnimatedObject ) + m_AnimatedObject->Release(); +} + +void CStateProp::Update( float dt ) +{ + unsigned int i; + + float lastFrame = m_BaseFrameController->GetFrame(); + m_BaseFrameController->Advance( dt ); + float newFrame = m_BaseFrameController->GetFrame(); + + //Check out transition + TransitionData tansdata = m_StatePropData->GetTransitionData( m_CurrentState ); + if ( tansdata.autoTransition ) + { + if (tansdata.onFrame >= lastFrame && tansdata.onFrame < newFrame) + { + SetState( tansdata.toState ); + } + } + + //Check callback events + if ( m_NumStatePropListeners > 0 ) + { + for ( i = 0; i < m_StatePropData->GetNumberOfCallbacks( m_CurrentState ); i++ ) + { + CallbackData callbackData = m_StatePropData->GetCallbackData( m_CurrentState , i ); + if ( callbackData.onFrame >= lastFrame && callbackData.onFrame < newFrame) + { + unsigned int i; + for ( i = 0; i < m_NumStatePropListeners; i++ ) + { + m_StatePropListener[i]->RecieveEvent( callbackData.callbackID , this ); + } + } + } + } + + //update frame controllers + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( i = 0; i < numFrameControllers; i++ ) + { + FrameControllerData fcData = m_StatePropData->GetFrameControllerData( m_CurrentState , i ); + + //if we need to update + if ( fcData.minFrame != fcData.maxFrame ) + { + tFrameController* fc = GetFrameControllerByIndex( i ); + + //if the min frame is greater than the max frame then reverse the update + if ( fcData.minFrame > fcData.maxFrame ) + { + fc->Advance( -dt , false ); + } + else + { + fc->Advance( dt , false ); + } + + if ( fcData.isCyclic && fcData.numberOfCycles > 0 ) + { + unsigned int currentNumberOfCycles = fc->LastFrameReached(); + if ( currentNumberOfCycles >= fcData.numberOfCycles ) + { + fc->SetCycleMode( FORCE_NON_CYCLIC ); + fc->SetFrame( fcData.maxFrame ); + } + } + } + } +} + +void CStateProp::UpdateFrameControllersForRender() +{ + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( unsigned int i = 0; i < numFrameControllers; i++ ) + { + GetFrameControllerByIndex( i )->Advance( 0.f , true ); + } +} + +unsigned int CStateProp::GetState() +{ + return m_CurrentState; +} + +void CStateProp::NextState() +{ + if ( m_CurrentState + 1 >= m_StatePropData->GetNumberOfStates() ) + { + SetState( 0 ); + } + else + { + SetState( m_CurrentState + 1 ); + } +} + +void CStateProp::PrevState() +{ + if ( m_CurrentState - 1 < 0 ) + { + SetState( m_StatePropData->GetNumberOfStates() - 1 ); + } + else + { + SetState( m_CurrentState - 1 ); + } +} + +void CStateProp::SetState( unsigned int state ) +{ + if ( state < m_StatePropData->GetNumberOfStates() && state >= 0 ) + { + m_CurrentState = state; + } + + m_BaseFrameController->SetFrame(0.f); + + unsigned int i; + + //reset the FC for new state + unsigned int numFrameControllers = GetNumberOfFrameControllers(); + for ( i = 0; i < numFrameControllers; i++ ) + { + FrameControllerData frameControllerData = m_StatePropData->GetFrameControllerData( m_CurrentState , i ); + tFrameController* fc = GetFrameControllerByIndex(i); + + //if we are holding a frame over from last state dont reset + if ( !frameControllerData.holdFrame ) + { + //Reset() MUST come first or it will trounce frame ranges etc... + fc->Reset(); + } + fc->SetRelativeSpeed( frameControllerData.relativeSpeed ); + fc->SetCycleMode( (frameControllerData.isCyclic == 1) ? FORCE_CYCLIC : FORCE_NON_CYCLIC ); + if ( frameControllerData.minFrame > frameControllerData.maxFrame ) + { + fc->SetFrameRange( frameControllerData.maxFrame , frameControllerData.minFrame ); + } + else + { + fc->SetFrameRange( frameControllerData.minFrame , frameControllerData.maxFrame ); + } + + if ( !frameControllerData.holdFrame ) + { + fc->SetFrame( frameControllerData.minFrame ); + } + } + + //Set visibility for new state + unsigned int numElements = m_AnimatedObject->GetBaseObject()->GetNumDrawableElement(); + for ( i = 0; i < numElements; i++ ) + { + tCompositeDrawable::DrawableElement* de = GetDrawableElement(i); + + de->SetLockVisibility(false); + VisibilityData visibilityData = m_StatePropData->GetVisibilityData( m_CurrentState , i ); + bool visible = visibilityData.isVisible == 1; + de->SetVisibility( visible ); + + //lock visibility if visiblility if false + de->SetLockVisibility(!visible); + } + + //notify listeners of a state change + for ( i = 0; i < m_NumStatePropListeners; i++ ) + { + m_StatePropListener[i]->RecieveEvent( STATEPROP_CHANGE_STATE_EVENT , this ); + } +} + +void CStateProp::OnEvent( unsigned int eventID ) +{ + unsigned int i; + unsigned int numEvents = m_StatePropData->GetNumberOfEvents( m_CurrentState ); + for ( i = 0; i < numEvents; i++ ) + { + EventData eventData = m_StatePropData->GetEventData( m_CurrentState , i ); + if ( eventData.eventID == eventID ) + { + SetState( eventData.toState ); + } + } +} + + +void CStateProp::AddStatePropListener( CStatePropListener* statePropListener ) +{ + if ( m_NumStatePropListeners < MAX_LISTENERS ) + { + m_StatePropListener[m_NumStatePropListeners] = statePropListener; + m_NumStatePropListeners++; + } +} +void CStateProp::RemoveStatePropListener( CStatePropListener* statePropListener ) +{ + unsigned int i = 0; + //find this entry + for ( i = 0; i < m_NumStatePropListeners; i++ ) + { + if ( m_StatePropListener[i] == statePropListener ) + { + m_NumStatePropListeners--; + break; + } + } + + //copy other entries back over + for ( i; i < m_NumStatePropListeners; i++ ) + { + m_StatePropListener[i] = m_StatePropListener[i+1]; + } +} + +tDrawable* CStateProp::GetDrawable() +{ + return m_AnimatedObject->GetBaseObject(); +} + +unsigned int CStateProp::GetNumberOfFrameControllers() +{ + return m_AnimatedObject->GetCurrentAnimation()->GetNumFrameControllers(); +} + +tFrameController* CStateProp::GetFrameControllerByIndex( unsigned int i ) +{ + return m_AnimatedObject->GetCurrentAnimation()->GetFrameControllerByIndex(i); +} + +unsigned int CStateProp::GetNumberOfDrawableElements() +{ + return m_AnimatedObject->GetBaseObject()->GetNumDrawableElement(); +} + +tCompositeDrawable::DrawableElement* CStateProp::GetDrawableElement( unsigned int i ) +{ + return m_AnimatedObject->GetBaseObject()->GetDrawableElement( i ); +} diff --git a/tools/statepropbuilder/src/statepropdata.cpp b/tools/statepropbuilder/src/statepropdata.cpp new file mode 100644 index 0000000..d5f93e9 --- /dev/null +++ b/tools/statepropbuilder/src/statepropdata.cpp @@ -0,0 +1,249 @@ +#include <string.h> +#include <p3d/utility.hpp> +#include <p3d/anim/animatedobject.hpp> +#include <constants/chunkids.hpp> +#include <p3d/chunkfile.hpp> + +#include "stateprop/statepropdata.hpp" + +//============================================================================= +// Class Declarations +// Prop +//============================================================================= +CStatePropData::CStatePropData( ) : + m_ObjectFactory( NULL ), + m_NumStates(0), + m_StateData(NULL) +{ +} + +CStatePropData::~CStatePropData() +{ + if (m_ObjectFactory) + { + m_ObjectFactory->Release(); + } + + unsigned int i = 0; + for( i; i < m_NumStates; i++ ) + { + delete m_StateData[i]; + } + delete m_StateData; +} + +//============================================================================= +//State Data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfStates() +{ + return m_NumStates; +} +StateData CStatePropData::GetStateData( unsigned int state ) +{ + return ( * (m_StateData[ state ]) ) ; +} + +//============================================================================= +//Transition Data +//============================================================================= + +//Get +TransitionData CStatePropData::GetTransitionData( int state ) +{ + return m_StateData[state]->transitionData; +} + +//============================================================================= +//Visibility Data +//============================================================================= + +//Get +VisibilityData CStatePropData::GetVisibilityData( int state , int index) +{ + return ( m_StateData[state]->visibilityData[index] ); +} + +//============================================================================= +//Frame controller data +//============================================================================= + +//Get +FrameControllerData CStatePropData::GetFrameControllerData( int state, int fc ) +{ + return m_StateData[state]->frameControllerData[fc]; +} + +//============================================================================= +//Event data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfEvents( int state ) +{ + return m_StateData[state]->numEvents; +} +EventData CStatePropData::GetEventData( int state , int eventindex ) +{ + return m_StateData[state]->eventData[eventindex]; +} + +//============================================================================= +//Callback Data +//============================================================================= + +//Get +unsigned int CStatePropData::GetNumberOfCallbacks( int state ) +{ + return m_StateData[state]->numCallbacks; +} +CallbackData CStatePropData::GetCallbackData( int state , int eventindex ) +{ + return m_StateData[state]->callbackData[eventindex]; +} + +//============================================================================= +// Class Declarations +// PropLoader +//============================================================================= +CStatePropDataLoader::CStatePropDataLoader() : + tSimpleChunkHandler(StateProp::STATEPROP) +{ +} + +//------------------------------------------------------------------------- +tEntity* CStatePropDataLoader::LoadObject(tChunkFile* f, tEntityStore* store) +{ + + CStatePropData* statePropData = new CStatePropData(); + + unsigned int version = f->GetLong(); + + //get the name + char buf[256]; + f->GetPString(buf); + statePropData->SetName(buf); + + + //get the object factory + f->GetPString(buf); + statePropData->m_ObjectFactory = p3d::find<tAnimatedObjectFactory>(store, buf); + if ( statePropData->m_ObjectFactory ) + { + statePropData->m_ObjectFactory->AddRef(); + } + + //get the num states + statePropData->m_NumStates = f->GetLong(); + + statePropData->m_StateData = new StateData*[statePropData->m_NumStates]; + memset(statePropData->m_StateData,0,statePropData->m_NumStates*sizeof(StateData*)); + + unsigned int currState; + unsigned int i; + for ( currState = 0; currState < statePropData->m_NumStates; currState++ ) + { + f->BeginChunk(); + + //get name + f->GetPString(buf); + + bool autoTransition = ( f->GetLong() != 0 ); + unsigned int toState = f->GetLong(); + unsigned int numDrawables = f->GetLong(); + unsigned int numFrameControllers = f->GetLong(); + unsigned int numEvents = f->GetLong(); + unsigned int numCallbacks = f->GetLong(); + float onFrame = f->GetFloat(); + + //give me memory dammit + int memsize = ( sizeof(StateData) ) + + ( sizeof(VisibilityData) * numDrawables ) + + ( sizeof(FrameControllerData) * numFrameControllers ) + + ( sizeof(EventData) * numEvents ) + + ( sizeof(CallbackData) * numCallbacks ); + + unsigned char* memptr = new unsigned char[ memsize ]; + + memset( memptr,0, memsize ); + + statePropData->m_StateData[currState] = (StateData*)memptr; + + statePropData->m_StateData[currState]->numEvents = numEvents; + statePropData->m_StateData[currState]->numCallbacks = numCallbacks; + + //Transition data + statePropData->m_StateData[currState]->transitionData.autoTransition = autoTransition; + statePropData->m_StateData[currState]->transitionData.onFrame = onFrame; + statePropData->m_StateData[currState]->transitionData.toState = toState; + + //Visibility data + statePropData->m_StateData[currState]->visibilityData = (VisibilityData*) ( memptr + sizeof(StateData) ); + for ( i=0; i < numDrawables; i++ ) + { + f->BeginChunk(); + f->GetPString(buf); + VisibilityData *p = &(statePropData->m_StateData[currState]->visibilityData[i]); + p->isVisible = (f->GetLong() != 0); + f->EndChunk(); + } + + //FrameController data + statePropData->m_StateData[currState]->frameControllerData = (FrameControllerData*) + ( memptr + sizeof(StateData) + + ( sizeof(VisibilityData) * numDrawables ) ); + + for ( i=0; i < numFrameControllers; i++ ) + { + f->BeginChunk(); + f->GetPString(buf); + FrameControllerData* p = &(statePropData->m_StateData[currState]->frameControllerData[i]); + p->isCyclic = ( f->GetLong() != 0 ); + p->numberOfCycles = f->GetLong(); + p->holdFrame = ( f->GetLong() != 0 ); + p->minFrame = f->GetFloat(); + p->maxFrame = f->GetFloat(); + p->relativeSpeed = f->GetFloat(); + f->EndChunk(); + } + + //Event data + statePropData->m_StateData[currState]->eventData = (EventData*) + ( memptr + sizeof(StateData) + + ( sizeof(VisibilityData) * numDrawables ) + + ( sizeof(FrameControllerData) * numFrameControllers ) ); + + for ( i=0; i < numEvents; i++ ) + { + f->BeginChunk(); + EventData* p = &(statePropData->m_StateData[currState]->eventData[i]); + memcpy( p->eventName , f->GetPString(buf) , 64 ); + p->toState = f->GetLong(); + p->eventID = f->GetLong(); + f->EndChunk(); + } + + //Callback data + statePropData->m_StateData[currState]->callbackData = (CallbackData*) + ( memptr + sizeof(StateData) + + ( sizeof(VisibilityData) * numDrawables ) + + ( sizeof(FrameControllerData) * numFrameControllers ) + + ( sizeof(EventData) * numEvents ) ); + + for ( i=0; i < numCallbacks; i++ ) + { + f->BeginChunk(); + CallbackData* p = &(statePropData->m_StateData[currState]->callbackData[i]); + memcpy( p->callbackName , f->GetPString(buf) , 64 ); + p->callbackID = f->GetLong(); + p->onFrame = f->GetFloat(); + f->EndChunk(); + } + + f->EndChunk(); + } + + return statePropData; +} diff --git a/tools/tools.dsw b/tools/tools.dsw new file mode 100644 index 0000000..3a5e1a3 --- /dev/null +++ b/tools/tools.dsw @@ -0,0 +1,1245 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "AnimCollDSGMaker"=..\game\libs\pure3d\tools\commandline\AnimCollDSGMaker\AnimCollDSGMaker.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + AnimCollDSGMaker + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\animcolldsgmaker + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "AnimDSGMaker"=..\game\libs\pure3d\tools\commandline\AnimDSGMaker\AnimDSGMaker.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + AnimDSGMaker + ..\game\libs\pure3d\tools\commandline\animdsgmaker + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "Image2LUT"=.\CreateSetChunk\SetChunk.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + .\createsetchunk + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "InstAnimDynaPhysMaker"=..\game\libs\pure3d\tools\commandline\InstAnimDynaPhysMaker\InstAnimDynaPhysMaker.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + InstAnimDynaPhysMaker + ..\game\libs\pure3d\tools\commandline\instanimdynaphysmaker + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency +}}} + +############################################################################### + +Project: "Instancer"=..\game\libs\pure3d\tools\commandline\Instancer\Instancer.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Instancer + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\instancer + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency +}}} + +############################################################################### + +Project: "LensFlareDSGMaker"=..\game\libs\pure3d\tools\commandline\LensFlareDSGMaker\LensFlareDSGMaker.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + LensFlareDSGMaker + ..\game\libs\pure3d\tools\commandline\lensflaredsgmaker + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "MayaRules"=.\MayaRules\MayaRules.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + MayaRules + ..\..\joel\projects\simpsons2\tools + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "Pure3D"=..\game\libs\pure3d\build\win32\Pure3D.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Pure3D + ..\..\joel\projects\simpsons2\game\libs\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "breakablesmaker"=..\game\libs\pure3d\tools\commandline\breakablesmaker\breakablesmaker.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + breakablesmaker + ..\game\libs\pure3d\tools\commandline\breakablesmaker + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "chunkGroup"=..\game\libs\pure3d\tools\commandline\chunkGroup\chunkGroup.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + chunkGroup + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\chunkgroup + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "convert2dxtn"=..\game\libs\pure3d\tools\commandline\convert2dxtn\convert2dxtn.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\tools\commandline\convert2dxtn + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "findbreakables"=..\game\libs\pure3d\tools\commandline\findbreakables\findbreakables.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + findbreakables + ..\game\libs\pure3d\tools\commandline\findbreakables + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "freetype"=..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + "$/DEV/freetype", KAOAAAAA + ..\..\joel\projects\simpsons2\game\libs\pure3d\lib\freetype\builds\win32\visualc + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "libpng"=..\game\libs\pure3d\build\win32\libpng.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + libpng + ..\..\joel\projects\simpsons2\game\libs\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "makechunktool"=..\game\libs\pure3d\tools\commandline\makechunktool\makechunktool.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + makechunktool + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\makechunktool + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "objectsnapper"=.\objectsnapper\build\objectsnapper.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + objectsnapper + ..\..\joel\projects\simpsons2\tools\objectsnapper\build + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "p3d2dsg"=..\game\libs\pure3d\tools\commandline\p3d2dsg\p3d2dsg.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3d2dsg + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3d2dsg + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3dcompress"=..\game\libs\pure3d\tools\commandline\p3dcompress\p3dcompress.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\tools\commandline\p3dcompress + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcontent + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3ddiff"="..\game\libs\pure3d\tools\gui-win32\p3ddiff\p3ddiff.dsp" - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3ddiff + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\gui-win32\p3ddiff + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency +}}} + +############################################################################### + +Project: "p3dexplorer"="..\game\libs\pure3d\tools\gui-win32\p3dexplorer\p3dexplorer.dsp" - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dexplorer + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\gui-win32\p3dexplorer + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency +}}} + +############################################################################### + +Project: "p3dgc"=..\game\libs\pure3d\tools\commandline\p3dgc\p3dgc.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\tools\commandline\p3dgc + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name Pure3D + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcore + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency +}}} + +############################################################################### + +Project: "p3dgendsg"=..\game\libs\pure3d\tools\commandline\p3dgendsg\p3dgendsg.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dgendsg + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3dgendsg + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3dgeo2prims"=..\game\libs\pure3d\tools\commandline\p3dgeo2prims\p3dgeo2prims.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dgeo2prims + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3dgeo2prims + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3dimage"=..\game\libs\pure3d\tools\commandline\p3dimage\p3dimage.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\tools\commandline\p3dimage + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3djoin"=..\game\libs\pure3d\tools\commandline\p3djoin\p3djoin.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\tools\commandline\p3djoin + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcontent + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "p3dmutate"=..\game\libs\pure3d\tools\commandline\p3dmutate\p3dmutate.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dmutate + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3dmutate + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "p3dsort"=..\game\libs\pure3d\tools\commandline\p3dsort\p3dsort.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dsort + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3dsort + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "p3dsplit"=..\game\libs\pure3d\tools\commandline\p3dsplit\p3dsplit.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + p3dsplit + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\p3dsplit + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency +}}} + +############################################################################### + +Project: "p3dview"=..\game\libs\pure3d\apps\p3dview\build\win32\p3dview.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\apps\p3dview\build\win32 + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name radcore + End Project Dependency + Begin Project Dependency + Project_Dep_Name Pure3D + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name pddidx8 + End Project Dependency + Begin Project Dependency + Project_Dep_Name pddigl + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcontent + End Project Dependency +}}} + +############################################################################### + +Project: "pddidx8"=..\game\libs\pure3d\build\win32\pddidx8.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game\libs\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "pddigl"=..\game\libs\pure3d\build\win32\pddigl.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + Perforce Project + ..\game + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "propwrapper"=..\game\libs\pure3d\tools\commandline\propwrapper\propwrapper.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + propwrapper + ..\game\libs\pure3d\tools\commandline\propwrapper + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency +}}} + +############################################################################### + +Project: "radcontent"=..\game\libs\radcontent\build\win32\radcontent.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + radcontent + ..\game\libs\radcontent + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "radcore"=..\game\libs\radcore\build\win32\radcore.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + radcore + ..\..\joel\projects\simpsons2\game\libs\radcore + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "radmath"=..\game\libs\radmath\build\win32\radmath.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + nbrooke-dual + ..\..\joel\projects\simpsons2\game\libs\radmath\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "relatedfiles"=.\relatedfiles\relatedfiles.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + relatedfiles + ..\..\joel\projects\simpsons2\tools\relatedfiles + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "roadOptimizer"=..\game\libs\pure3d\tools\commandline\roadOptimizer\roadOptimizer.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + roadOptimizer + ..\..\joel\projects\simpsons2\game\libs\pure3d\tools\commandline\roadoptimizer + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency +}}} + +############################################################################### + +Project: "toollib"=..\game\libs\pure3d\toollib\toollib.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + toollib + ..\..\joel\projects\simpsons2\game\libs\pure3d\toollib + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "toollib_extras"=..\game\libs\pure3d\toollib\toollib_extras.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + toollib_extras + ..\..\joel\projects\simpsons2\game\libs\pure3d\toollib + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "trackeditor"=.\trackeditor\build\trackeditor.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + trackeditor + ..\..\joel\projects\simpsons2\tools\trackeditor\build + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency +}}} + +############################################################################### + +Project: "worldbuilder"=.\worldbuilder\build\worldbuilder.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + worldbuilder + ..\..\joel\projects\simpsons2\tools\worldbuilder\build + end source code control +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name freetype + End Project Dependency + Begin Project Dependency + Project_Dep_Name libpng + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib + End Project Dependency + Begin Project Dependency + Project_Dep_Name zlib + End Project Dependency + Begin Project Dependency + Project_Dep_Name radmath + End Project Dependency + Begin Project Dependency + Project_Dep_Name toollib_extras + End Project Dependency + Begin Project Dependency + Project_Dep_Name Pure3D + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcore + End Project Dependency + Begin Project Dependency + Project_Dep_Name radcontent + End Project Dependency +}}} + +############################################################################### + +Project: "zlib"=..\game\libs\pure3d\build\win32\zlib.dsp - Package Owner=<4> + +Package=<5> +{{{ + begin source code control + zlib + ..\..\joel\projects\simpsons2\game\libs\pure3d\build\win32 + end source code control +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ + begin source code control + tools + . + end source code control +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/tools/tools.sdf b/tools/tools.sdf Binary files differnew file mode 100644 index 0000000..32c41b6 --- /dev/null +++ b/tools/tools.sdf diff --git a/tools/tools.sln b/tools/tools.sln new file mode 100644 index 0000000..047cefd --- /dev/null +++ b/tools/tools.sln @@ -0,0 +1,414 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimCollDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimCollDSGMaker\AnimCollDSGMaker.vcxproj", "{2DBC8F99-0223-499F-9AC1-4702EA5DD47B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AnimDSGMaker", "..\game\libs\pure3d\tools\commandline\AnimDSGMaker\AnimDSGMaker.vcxproj", "{FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InstAnimDynaPhysMaker", "..\game\libs\pure3d\tools\commandline\InstAnimDynaPhysMaker\InstAnimDynaPhysMaker.vcxproj", "{C8C67032-1BBC-4050-AEAE-2D43AE950C76}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Instancer", "..\game\libs\pure3d\tools\commandline\Instancer\Instancer.vcxproj", "{3C294239-15AF-49E2-A5E8-E5CD2785FC3D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LensFlareDSGMaker", "..\game\libs\pure3d\tools\commandline\LensFlareDSGMaker\LensFlareDSGMaker.vcxproj", "{B93AEF58-B533-4820-A0D0-1F8E91301129}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MayaRules", "MayaRules\MayaRules.vcxproj", "{F456A1E8-974F-4D56-BB57-3D944DF8DCB1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Pure3D", "..\game\libs\pure3d\build\win32\Pure3D.vcxproj", "{67904E19-DE3B-4707-8F96-13AA64DBF58A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "breakablesmaker", "..\game\libs\pure3d\tools\commandline\breakablesmaker\breakablesmaker.vcxproj", "{345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "chunkGroup", "..\game\libs\pure3d\tools\commandline\chunkGroup\chunkGroup.vcxproj", "{E47D996B-68D6-47DE-B640-44B3C0363E6E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "convert2dxtn", "..\game\libs\pure3d\tools\commandline\convert2dxtn\convert2dxtn.vcxproj", "{F7404001-6D28-4698-9BF8-5B26426765EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.vcxproj", "{6D333C70-A27D-4E25-AD26-BB9E20558B8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libpng", "..\game\libs\pure3d\build\win32\libpng.vcxproj", "{492CA803-8196-4C47-A3BD-84B7C2D9514D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makechunktool", "..\game\libs\pure3d\tools\commandline\makechunktool\makechunktool.vcxproj", "{01A371FA-BA4E-4DC9-B339-4E9552545991}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "objectsnapper", "objectsnapper\build\objectsnapper.vcxproj", "{278283D0-FEC2-4B06-8AED-8DDB745215B4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3d2dsg", "..\game\libs\pure3d\tools\commandline\p3d2dsg\p3d2dsg.vcxproj", "{B1DD8C69-F562-4275-BE4E-7A6EF727ED30}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddel", "..\game\libs\pure3d\tools\commandline\p3ddel\p3ddel.vcxproj", "{A7DFC4D3-FD76-4375-AD16-009BC39A697D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3ddiff", "..\game\libs\pure3d\tools\gui-win32\p3ddiff\p3ddiff.vcxproj", "{84451C74-4E26-4557-9FB8-8C26243DAC55}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dexplorer", "..\game\libs\pure3d\tools\gui-win32\p3dexplorer\p3dexplorer.vcxproj", "{72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgc", "..\game\libs\pure3d\tools\commandline\p3dgc\p3dgc.vcxproj", "{44AB737E-AA4F-47AA-943B-D2ABA9CB424B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgendsg", "..\game\libs\pure3d\tools\commandline\p3dgendsg\p3dgendsg.vcxproj", "{ACF60C5C-93C6-447B-92A2-477AECB0E19C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dgeo2prims", "..\game\libs\pure3d\tools\commandline\p3dgeo2prims\p3dgeo2prims.vcxproj", "{635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dimage", "..\game\libs\pure3d\tools\commandline\p3dimage\p3dimage.vcxproj", "{AFE81408-CC31-4EAF-9597-4931F6C08CED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dmutate", "..\game\libs\pure3d\tools\commandline\p3dmutate\p3dmutate.vcxproj", "{A3C2F702-CE80-48D6-9217-E73E93F19F88}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsort", "..\game\libs\pure3d\tools\commandline\p3dsort\p3dsort.vcxproj", "{DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dsplit", "..\game\libs\pure3d\tools\commandline\p3dsplit\p3dsplit.vcxproj", "{4C924B45-1710-4A4D-9D40-CC232B14CD44}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcontent", "..\game\libs\radcontent\build\win32\radcontent.vcxproj", "{B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radcore", "..\game\libs\radcore\build\win32\radcore.vcxproj", "{3772A735-0353-433A-A8A2-EB45C84F9139}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "radmath", "..\game\libs\radmath\build\win32\radmath.vcxproj", "{906E914F-EB63-4B12-9F07-00A727472080}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "relatedfiles", "relatedfiles\relatedfiles.vcxproj", "{EF05D776-F91E-422F-BD64-16B3F5557888}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "roadOptimizer", "..\game\libs\pure3d\tools\commandline\roadOptimizer\roadOptimizer.vcxproj", "{37223926-26AB-4BCE-BBEB-191699C3BEF1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib", "..\game\libs\pure3d\toollib\toollib.vcxproj", "{467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toollib_extras", "..\game\libs\pure3d\toollib\toollib_extras.vcxproj", "{CDB92E4A-1E5D-49A8-8153-34264B3FEF29}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "trackeditor", "trackeditor\build\trackeditor.vcxproj", "{8D79E782-9747-4732-A869-CA630AC7D3C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "worldbuilder", "worldbuilder\build\worldbuilder.vcxproj", "{B5900135-3859-403D-BC2F-FD90B4C2B2E5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib", "..\game\libs\pure3d\build\win32\zlib.vcxproj", "{A21A1BC1-C10B-4260-B494-A51A1E79A40E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "p3dcompdrawopt", "..\game\libs\pure3d\tools\commandline\p3dcompdrawopt\p3dcompdrawopt.vcxproj", "{967364EA-F3C7-455E-BBA4-F8B031FB780C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + Tools Debug|Win32 = Tools Debug|Win32 + Tools Release|Win32 = Tools Release|Win32 + Tune|Win32 = Tune|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug|Win32.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Debug|Win32.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release|Win32.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Release|Win32.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Debug|Win32.Build.0 = Debug|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release|Win32.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tools Release|Win32.Build.0 = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune|Win32.ActiveCfg = Release|Win32 + {2DBC8F99-0223-499F-9AC1-4702EA5DD47B}.Tune|Win32.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug|Win32.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Debug|Win32.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release|Win32.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Release|Win32.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Debug|Win32.Build.0 = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release|Win32.ActiveCfg = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tools Release|Win32.Build.0 = Release|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune|Win32.ActiveCfg = Debug|Win32 + {FEB4DF89-8F7E-4AE9-A508-AFE1BFC4F6D5}.Tune|Win32.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Debug|Win32.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release|Win32.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Release|Win32.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Debug|Win32.Build.0 = Debug|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release|Win32.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tools Release|Win32.Build.0 = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune|Win32.ActiveCfg = Release|Win32 + {C8C67032-1BBC-4050-AEAE-2D43AE950C76}.Tune|Win32.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug|Win32.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Debug|Win32.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release|Win32.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Release|Win32.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Debug|Win32.Build.0 = Debug|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release|Win32.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tools Release|Win32.Build.0 = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune|Win32.ActiveCfg = Release|Win32 + {3C294239-15AF-49E2-A5E8-E5CD2785FC3D}.Tune|Win32.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug|Win32.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Debug|Win32.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release|Win32.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Release|Win32.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Debug|Win32.Build.0 = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release|Win32.ActiveCfg = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tools Release|Win32.Build.0 = Release|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune|Win32.ActiveCfg = Debug|Win32 + {B93AEF58-B533-4820-A0D0-1F8E91301129}.Tune|Win32.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug|Win32.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Debug|Win32.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release|Win32.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Release|Win32.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Debug|Win32.Build.0 = Debug|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release|Win32.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tools Release|Win32.Build.0 = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune|Win32.ActiveCfg = Release|Win32 + {F456A1E8-974F-4D56-BB57-3D944DF8DCB1}.Tune|Win32.Build.0 = Release|Win32 + {67904E19-DE3B-4707-8F96-13AA64DBF58A}.Debug|Win32.ActiveCfg = Debug|Win32 + {67904E19-DE3B-4707-8F96-13AA64DBF58A}.Release|Win32.ActiveCfg = Release|Win32 + {67904E19-DE3B-4707-8F96-13AA64DBF58A}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {67904E19-DE3B-4707-8F96-13AA64DBF58A}.Tools Release|Win32.ActiveCfg = Release|Win32 + {67904E19-DE3B-4707-8F96-13AA64DBF58A}.Tune|Win32.ActiveCfg = Tune|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug|Win32.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Debug|Win32.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release|Win32.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Release|Win32.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Debug|Win32.Build.0 = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release|Win32.ActiveCfg = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tools Release|Win32.Build.0 = Release|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune|Win32.ActiveCfg = Debug|Win32 + {345A8D57-E8D9-41DF-96DE-AAFDF810BAB8}.Tune|Win32.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug|Win32.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Debug|Win32.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release|Win32.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Release|Win32.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Debug|Win32.Build.0 = Debug|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release|Win32.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tools Release|Win32.Build.0 = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune|Win32.ActiveCfg = Release|Win32 + {E47D996B-68D6-47DE-B640-44B3C0363E6E}.Tune|Win32.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Debug|Win32.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release|Win32.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Release|Win32.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Debug|Win32.Build.0 = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release|Win32.ActiveCfg = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tools Release|Win32.Build.0 = Release|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune|Win32.ActiveCfg = Debug|Win32 + {F7404001-6D28-4698-9BF8-5B26426765EA}.Tune|Win32.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug|Win32.ActiveCfg = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Debug|Win32.Build.0 = Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release|Win32.ActiveCfg = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Release|Win32.Build.0 = Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Debug|Win32.Build.0 = Tools Debug|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tools Release|Win32.Build.0 = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune|Win32.ActiveCfg = Tools Release|Win32 + {6D333C70-A27D-4E25-AD26-BB9E20558B8F}.Tune|Win32.Build.0 = Tools Release|Win32 + {492CA803-8196-4C47-A3BD-84B7C2D9514D}.Debug|Win32.ActiveCfg = Debug|Win32 + {492CA803-8196-4C47-A3BD-84B7C2D9514D}.Release|Win32.ActiveCfg = Release|Win32 + {492CA803-8196-4C47-A3BD-84B7C2D9514D}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {492CA803-8196-4C47-A3BD-84B7C2D9514D}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {492CA803-8196-4C47-A3BD-84B7C2D9514D}.Tune|Win32.ActiveCfg = Tune|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug|Win32.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Debug|Win32.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release|Win32.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Release|Win32.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Debug|Win32.Build.0 = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release|Win32.ActiveCfg = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tools Release|Win32.Build.0 = Release|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune|Win32.ActiveCfg = Debug|Win32 + {01A371FA-BA4E-4DC9-B339-4E9552545991}.Tune|Win32.Build.0 = Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug|Win32.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Debug|Win32.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release|Win32.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Release|Win32.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Debug|Win32.Build.0 = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tools Release|Win32.Build.0 = Tools Release|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune|Win32.ActiveCfg = Tools Debug|Win32 + {278283D0-FEC2-4B06-8AED-8DDB745215B4}.Tune|Win32.Build.0 = Tools Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug|Win32.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Debug|Win32.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release|Win32.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Release|Win32.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Debug|Win32.Build.0 = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release|Win32.ActiveCfg = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tools Release|Win32.Build.0 = Release|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune|Win32.ActiveCfg = Debug|Win32 + {B1DD8C69-F562-4275-BE4E-7A6EF727ED30}.Tune|Win32.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug|Win32.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Debug|Win32.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release|Win32.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Release|Win32.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Debug|Win32.Build.0 = Debug|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release|Win32.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tools Release|Win32.Build.0 = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune|Win32.ActiveCfg = Release|Win32 + {A7DFC4D3-FD76-4375-AD16-009BC39A697D}.Tune|Win32.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug|Win32.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Debug|Win32.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release|Win32.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Release|Win32.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Debug|Win32.Build.0 = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release|Win32.ActiveCfg = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tools Release|Win32.Build.0 = Release|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune|Win32.ActiveCfg = Debug|Win32 + {84451C74-4E26-4557-9FB8-8C26243DAC55}.Tune|Win32.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug|Win32.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Debug|Win32.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release|Win32.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Release|Win32.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Debug|Win32.Build.0 = Debug|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release|Win32.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tools Release|Win32.Build.0 = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune|Win32.ActiveCfg = Release|Win32 + {72FA5E78-A53E-42DF-9EB2-1A3D6DF475A2}.Tune|Win32.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug|Win32.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Debug|Win32.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release|Win32.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Release|Win32.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Debug|Win32.Build.0 = Debug|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release|Win32.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tools Release|Win32.Build.0 = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune|Win32.ActiveCfg = Release|Win32 + {44AB737E-AA4F-47AA-943B-D2ABA9CB424B}.Tune|Win32.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug|Win32.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Debug|Win32.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release|Win32.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Release|Win32.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Debug|Win32.Build.0 = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release|Win32.ActiveCfg = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tools Release|Win32.Build.0 = Release|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune|Win32.ActiveCfg = Debug|Win32 + {ACF60C5C-93C6-447B-92A2-477AECB0E19C}.Tune|Win32.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug|Win32.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Debug|Win32.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release|Win32.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Release|Win32.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Debug|Win32.Build.0 = Debug|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release|Win32.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tools Release|Win32.Build.0 = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune|Win32.ActiveCfg = Release|Win32 + {635AA5F3-F45F-49E9-A94D-1519CAAE1AC9}.Tune|Win32.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug|Win32.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Debug|Win32.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release|Win32.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Release|Win32.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Debug|Win32.Build.0 = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release|Win32.ActiveCfg = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tools Release|Win32.Build.0 = Release|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune|Win32.ActiveCfg = Debug|Win32 + {AFE81408-CC31-4EAF-9597-4931F6C08CED}.Tune|Win32.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug|Win32.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Debug|Win32.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release|Win32.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Release|Win32.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Debug|Win32.Build.0 = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release|Win32.ActiveCfg = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tools Release|Win32.Build.0 = Release|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune|Win32.ActiveCfg = Debug|Win32 + {A3C2F702-CE80-48D6-9217-E73E93F19F88}.Tune|Win32.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Debug|Win32.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release|Win32.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Release|Win32.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Debug|Win32.Build.0 = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release|Win32.ActiveCfg = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tools Release|Win32.Build.0 = Release|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune|Win32.ActiveCfg = Debug|Win32 + {DA5FDB78-78F0-4404-B7F2-BB28206B8BDC}.Tune|Win32.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug|Win32.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Debug|Win32.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release|Win32.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Release|Win32.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Debug|Win32.Build.0 = Debug|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release|Win32.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tools Release|Win32.Build.0 = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune|Win32.ActiveCfg = Release|Win32 + {4C924B45-1710-4A4D-9D40-CC232B14CD44}.Tune|Win32.Build.0 = Release|Win32 + {B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}.Release|Win32.ActiveCfg = Release|Win32 + {B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {B5C1C3A8-11BC-4D82-A7EB-A85B22DB74EA}.Tune|Win32.ActiveCfg = Tune|Win32 + {3772A735-0353-433A-A8A2-EB45C84F9139}.Debug|Win32.ActiveCfg = Debug|Win32 + {3772A735-0353-433A-A8A2-EB45C84F9139}.Release|Win32.ActiveCfg = Release|Win32 + {3772A735-0353-433A-A8A2-EB45C84F9139}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {3772A735-0353-433A-A8A2-EB45C84F9139}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {3772A735-0353-433A-A8A2-EB45C84F9139}.Tune|Win32.ActiveCfg = Tune|Win32 + {906E914F-EB63-4B12-9F07-00A727472080}.Debug|Win32.ActiveCfg = Debug|Win32 + {906E914F-EB63-4B12-9F07-00A727472080}.Release|Win32.ActiveCfg = Release|Win32 + {906E914F-EB63-4B12-9F07-00A727472080}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {906E914F-EB63-4B12-9F07-00A727472080}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {906E914F-EB63-4B12-9F07-00A727472080}.Tune|Win32.ActiveCfg = Tune|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug|Win32.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Debug|Win32.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release|Win32.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Release|Win32.Build.0 = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Debug|Win32.Build.0 = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tools Release|Win32.ActiveCfg = Release|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune|Win32.ActiveCfg = Debug|Win32 + {EF05D776-F91E-422F-BD64-16B3F5557888}.Tune|Win32.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug|Win32.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Debug|Win32.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release|Win32.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Release|Win32.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Debug|Win32.Build.0 = Debug|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release|Win32.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tools Release|Win32.Build.0 = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune|Win32.ActiveCfg = Release|Win32 + {37223926-26AB-4BCE-BBEB-191699C3BEF1}.Tune|Win32.Build.0 = Release|Win32 + {467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}.Debug|Win32.ActiveCfg = Debug|Win32 + {467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}.Release|Win32.ActiveCfg = Release|Win32 + {467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {467CB4E6-6A88-48AF-9CF4-3C1B5AD13F29}.Tune|Win32.ActiveCfg = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug|Win32.ActiveCfg = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Debug|Win32.Build.0 = Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release|Win32.ActiveCfg = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Release|Win32.Build.0 = Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Debug|Win32.Build.0 = Tools Debug|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tools Release|Win32.Build.0 = Tools Release|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune|Win32.ActiveCfg = Tune|Win32 + {CDB92E4A-1E5D-49A8-8153-34264B3FEF29}.Tune|Win32.Build.0 = Tune|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug|Win32.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Debug|Win32.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release|Win32.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Release|Win32.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Debug|Win32.Build.0 = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tools Release|Win32.Build.0 = Tools Release|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune|Win32.ActiveCfg = Tools Debug|Win32 + {8D79E782-9747-4732-A869-CA630AC7D3C0}.Tune|Win32.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug|Win32.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Debug|Win32.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release|Win32.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Release|Win32.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Debug|Win32.Build.0 = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tools Release|Win32.Build.0 = Tools Release|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune|Win32.ActiveCfg = Tools Debug|Win32 + {B5900135-3859-403D-BC2F-FD90B4C2B2E5}.Tune|Win32.Build.0 = Tools Debug|Win32 + {A21A1BC1-C10B-4260-B494-A51A1E79A40E}.Debug|Win32.ActiveCfg = Debug|Win32 + {A21A1BC1-C10B-4260-B494-A51A1E79A40E}.Release|Win32.ActiveCfg = Release|Win32 + {A21A1BC1-C10B-4260-B494-A51A1E79A40E}.Tools Debug|Win32.ActiveCfg = Tools Debug|Win32 + {A21A1BC1-C10B-4260-B494-A51A1E79A40E}.Tools Release|Win32.ActiveCfg = Tools Release|Win32 + {A21A1BC1-C10B-4260-B494-A51A1E79A40E}.Tune|Win32.ActiveCfg = Tune|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug|Win32.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Debug|Win32.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release|Win32.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Release|Win32.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug|Win32.ActiveCfg = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Debug|Win32.Build.0 = Debug|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release|Win32.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tools Release|Win32.Build.0 = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune|Win32.ActiveCfg = Release|Win32 + {967364EA-F3C7-455E-BBA4-F8B031FB780C}.Tune|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/tools.v12.suo b/tools/tools.v12.suo Binary files differnew file mode 100644 index 0000000..74fd7a7 --- /dev/null +++ b/tools/tools.v12.suo diff --git a/tools/trackeditor/build/Debug/trackeditor.log b/tools/trackeditor/build/Debug/trackeditor.log new file mode 100644 index 0000000..1635e95 --- /dev/null +++ b/tools/trackeditor/build/Debug/trackeditor.log @@ -0,0 +1,8 @@ +Build started 11/7/2015 5:44:30 PM. + 1>Project "G:\Code\Simpsons Hit&Run\tools\trackeditor\build\trackeditor.vcxproj" on node 2 (Build target(s)). + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(369,5): error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. + 1>Done Building Project "G:\Code\Simpsons Hit&Run\tools\trackeditor\build\trackeditor.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.02 diff --git a/tools/trackeditor/build/trackeditor.dsp b/tools/trackeditor/build/trackeditor.dsp new file mode 100644 index 0000000..1ddb5dc --- /dev/null +++ b/tools/trackeditor/build/trackeditor.dsp @@ -0,0 +1,7141 @@ +# Microsoft Developer Studio Project File - Name="trackeditor" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=trackeditor - Win32 Tools Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "trackeditor.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "trackeditor.mak" CFG="trackeditor - Win32 Tools Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "trackeditor - Win32 Tools Release" (based on "Win32 (x86) Application") +!MESSAGE "trackeditor - Win32 Tools Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "trackeditor" +# PROP Scc_LocalPath "." +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "trackeditor___Win32_Tools_Release" +# PROP BASE Intermediate_Dir "trackeditor___Win32_Tools_Release" +# PROP BASE Ignore_Export_Lib 1 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\code\\" /I "C:\AW\Maya4.0\include" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /Fp"Release/PCH.pch" /YX"precompiled/PCH.h" /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /I "..\..\..\game\code\constants" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_RELEASE" /Fp"Release/PCH.pch" /YX"precompiled/pch.h" /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release\trackeditor.mll" /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release\trackeditor.mll" /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy trackeditor.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Release\trackeditor.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\trackeditor.mll copy .\Release\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +# End Special Build Tool + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "trackeditor___Win32_Tools_Debug" +# PROP BASE Intermediate_Dir "trackeditor___Win32_Tools_Debug" +# PROP BASE Ignore_Export_Lib 1 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\code\\" /I "C:\AW\Maya4.0\include" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /D "_DEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /FR /YX"PCH.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /I "..\..\..\game\code\constants" /D "_DEBUG" /D "WIN32" /D "_WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_WIN32" /D "RAD_PC" /D "RAD_DEBUG" /FR /YX"PCH.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\trackeditor.mll" /pdbtype:sept /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\trackeditor.mll" /pdbtype:sept /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy trackeditor.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditord.mll copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "trackeditor - Win32 Tools Release" +# Name "trackeditor - Win32 Tools Debug" +# Begin Group "main" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\main\constants.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.cpp +DEP_CPP_PLUGI=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MApiVersion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnPlugin.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\mayahandles.h"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\commands\export.h"\ + "..\code\commands\intersectioncommands.h"\ + "..\code\commands\trackeditorcommands.h"\ + "..\code\commands\treelinecommand.h"\ + "..\code\contexts\bvcontext.h"\ + "..\code\contexts\intersectioncontext.h"\ + "..\code\contexts\ppcontext.h"\ + "..\code\contexts\treelinecontext.h"\ + "..\code\main\constants.h"\ + "..\code\main\pluginMain.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\fenceline.h"\ + "..\code\nodes\intersection.h"\ + "..\code\nodes\pedpath.h"\ + "..\code\nodes\road.h"\ + "..\code\nodes\tiledisplay.h"\ + "..\code\nodes\treelineshapenode.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD BASE CPP /YX"precompiled/PCH.h" +# ADD CPP /YX"precompiled/PCH.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\shapeconstants.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\trackeditor.cpp +DEP_CPP_TRACK=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\fenceline.h"\ + "..\code\nodes\intersection.h"\ + "..\code\nodes\pedpath.h"\ + "..\code\nodes\road.h"\ + "..\code\nodes\tiledisplay.h"\ + "..\code\nodes\treelineshapenode.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\main\trackeditor.h +# End Source File +# End Group +# Begin Group "commands" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\commands\export.cpp +DEP_CPP_EXPOR=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\..\globalcode\utility\MUI.h"\ + "..\code\commands\export.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\fenceline.h"\ + "..\code\nodes\intersection.h"\ + "..\code\nodes\pedpath.h"\ + "..\code\nodes\road.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\commands\export.h +# End Source File +# Begin Source File + +SOURCE=..\code\commands\intersectioncommands.cpp +DEP_CPP_INTER=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\commands\intersectioncommands.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\intersection.h"\ + "..\code\nodes\road.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\commands\intersectioncommands.h +# End Source File +# Begin Source File + +SOURCE=..\code\commands\trackeditorcommands.cpp +DEP_CPP_TRACKE=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\commands\trackeditorcommands.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\commands\trackeditorcommands.h +# End Source File +# Begin Source File + +SOURCE=..\code\commands\treelinecommand.cpp +DEP_CPP_TREEL=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\code\commands\treelinecommand.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\treelineshapenode.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\commands\treelinecommand.h +# End Source File +# End Group +# Begin Group "nodes" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\nodes\fenceline.cpp +DEP_CPP_FENCE=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\fenceline.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\fenceline.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\intersection.cpp +DEP_CPP_INTERS=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\GLExt.h"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\..\globalcode\utility\nodehelper.h"\ + "..\..\globalcode\utility\transformmatrix.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\intersection.h"\ + "..\code\precompiled\PCH.h"\ + +NODEP_CPP_INTERS=\ + "..\..\globalcode\utility\main\toolhack.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\intersection.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\NU.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\pedpath.cpp +DEP_CPP_PEDPA=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\pedpath.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\pedpath.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\road.cpp +DEP_CPP_ROAD_=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\..\globalcode\utility\transformmatrix.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\road.h"\ + "..\code\precompiled\PCH.h"\ + +NODEP_CPP_ROAD_=\ + "..\..\globalcode\utility\main\toolhack.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\road.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\tiledisplay.cpp +DEP_CPP_TILED=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\GLExt.h"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\tiledisplay.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\tiledisplay.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\treelineshapenode.cpp +DEP_CPP_TREELI=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\..\globalcode\utility\MUI.h"\ + "..\code\main\constants.h"\ + "..\code\main\shapeconstants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\treelineshapenode.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\treelineshapenode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\walllocator.cpp +DEP_CPP_WALLL=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\GLExt.h"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\..\globalcode\utility\nodehelper.h"\ + "..\code\main\constants.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\walllocator.h +# End Source File +# End Group +# Begin Group "contexts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\contexts\bvcontext.cpp +DEP_CPP_BVCON=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\contexts\bvcontext.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\fenceline.h"\ + "..\code\nodes\NU.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\bvcontext.h +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\intersectioncontext.cpp +DEP_CPP_INTERSE=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\contexts\intersectioncontext.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\intersection.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\intersectioncontext.h +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\ppcontext.cpp +DEP_CPP_PPCON=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\contexts\ppcontext.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\NU.h"\ + "..\code\nodes\pedpath.h"\ + "..\code\nodes\walllocator.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\ppcontext.h +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\treelinecontext.cpp +DEP_CPP_TREELIN=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\contexts\treelinecontext.h"\ + "..\code\main\constants.h"\ + "..\code\main\trackeditor.h"\ + "..\code\nodes\treelineshapenode.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\treelinecontext.h +# End Source File +# End Group +# Begin Group "utility" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\globalcode\utility\GLExt.cpp +DEP_CPP_GLEXT=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\GLExt.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\GLExt.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.cpp +DEP_CPP_MAYAH=\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\globalcode\utility\mayahandles.h"\ + "..\..\globalcode\utility\stdafx.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.cpp +DEP_CPP_MEXT_=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt.h"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.cpp +DEP_CPP_MEXT_T=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\MExt_template.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.cpp +DEP_CPP_MUI_C=\ + "..\..\globalcode\utility\mayahandles.h"\ + "..\..\globalcode\utility\MUI.h"\ + "..\..\globalcode\utility\stdafx.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\overlaymarquee.cpp +DEP_CPP_OVERL=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\overlaymarquee.h"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\overlaymarquee.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\stdafx.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\transformmatrix.cpp +DEP_CPP_TRANS=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\..\globalcode\utility\transformmatrix.h"\ + "..\code\precompiled\PCH.h"\ + +NODEP_CPP_TRANS=\ + "..\..\globalcode\utility\main\toolhack.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\transformmatrix.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.c + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\winutil.c +DEP_CPP_WINUT=\ + "..\..\globalcode\utility\winutil.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD CPP /YX"precompiled\pch.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD CPP /YX"precompiled\pch.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\winutil.h +# End Source File +# End Group +# Begin Group "mel scripts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\scripts\te_BVContext.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_BVContext.mel +InputName=te_BVContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_BVContext.mel +InputName=te_BVContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_cleanup.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_cleanup.mel +InputName=te_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_cleanup.mel +InputName=te_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_editorwindow.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_editorwindow.mel +InputName=te_editorwindow + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_editorwindow.mel +InputName=te_editorwindow + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_globals.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_globals.mel +InputName=te_globals + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_globals.mel +InputName=te_globals + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_IntersectionContext.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_IntersectionContext.mel +InputName=te_IntersectionContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_IntersectionContext.mel +InputName=te_IntersectionContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_main.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_main.mel +InputName=te_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_main.mel +InputName=te_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_PPContext.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_PPContext.mel +InputName=te_PPContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_PPContext.mel +InputName=te_PPContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_setup.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_setup.mel +InputName=te_setup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\te_setup.mel +InputName=te_setup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\te_treelineContext.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build +InputPath=..\code\scripts\te_treelineContext.mel +InputName=te_treelineContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build +InputPath=..\code\scripts\te_treelineContext.mel +InputName=te_treelineContext + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "precompiled header" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\precompiled\PCH.cpp +DEP_CPP_PCH_C=\ + "..\..\..\game\code\constants\srrchunks.h"\ + "..\..\..\game\libs\pure3d\constants\atenum.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunkids.hpp"\ + "..\..\..\game\libs\pure3d\constants\chunks.h"\ + "..\..\..\game\libs\pure3d\constants\psenum.hpp"\ + "..\..\..\game\libs\pure3d\pddi\pddienum.hpp"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\M3dView.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAngle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAnimControl.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArgList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataBuilder.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MArrayDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeIndex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpec.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MAttributeSpecArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MBoundingBox.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MColorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MCursor.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDagPath.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataBlock.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDataHandle.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDGModifier.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDistance.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDoubleArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequest.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MDrawRequestQueue.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEulerRotation.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MEvent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFloatVectorArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFn.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAnimCurve.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnBase.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnCompoundAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDagNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDependencyNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnDoubleArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnEnumAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIkJoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnIntArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMatrixData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMesh.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnMessageAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnNumericData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnSingleIndexedComponent.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnStringArrayData.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTransform.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MFnTypedAttribute.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MGlobal.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MIntArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDag.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItDependencyNodes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItMeshVertex.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MItSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMaterial.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MNodeMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObject.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MObjectArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlug.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPlugArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPoint.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPointArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContext.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxContextCommand.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxGeometryIterator.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxLocatorNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxNode.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShape.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MPxSurfaceShapeUI.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MQuaternion.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectInfo.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionList.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSelectionMask.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStatus.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MString.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MStringArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MSyntax.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTime.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTimeArray.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTransformationMatrix.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypeId.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MTypes.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MUiMessage.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVector.h"\ + "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\maya\MVectorArray.h"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimatedObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimationChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimCollDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAnimDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlAttributeTableChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBBoxChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBreakableObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlBSphereChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlChannelChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCollisionObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlCompositeDrawableChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlDynaPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlExtraMatrixChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFenceDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFencelineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFollowCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlFrameControllerChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlImageChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaEntityDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstancesChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstaStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlInstParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlIntersectionChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMeshChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlMultiControllerChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlObjectAttributeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlParticleSystemChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPedpathChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysicsObjectChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPhysWrapperChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlPrimGroupChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlRoadSegmentDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlScenegraphChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSkinChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlSpriteChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlStaticPhysDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlTreeDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWalkerCamDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWallChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBLocatorChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBRailCamChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBSplineChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWBTriggerVolumeChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\chunks16\inc\tlWorldSphereDSGChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\dospath.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\getopt.h"\ + "..\..\..\game\libs\pure3d\toollib\inc\glob.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\hash.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\lzr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAdjEdgeList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimatedObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObject.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBillboardObjectAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlBox.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCameraAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChannel.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlChunk16.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlColour.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlCompositeDrawable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlDataChunk.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEdge.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEntity.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlentitytable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlEventAnimation.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpression.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlExpressionOffsets.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFile.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFileByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFont.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFourCC.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlFrameController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlGameAttr.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHashList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHeightField.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlHistory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImage.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlImageQuantizer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIndexedVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlinventory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlIterator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLight.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLightAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLoadManager.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlLocator.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMatrix.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMemByteStream.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlMultiController.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOffsetList.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlOpticEffect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlParticleSystem.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPhotonMap.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoint.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPose.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPoseAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroup.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPrimGroupMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlPS2PrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlQuat.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlRay.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSafeEntityCaster.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraph.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlScenegraphTransformAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSimpleShader.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkeleton.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkin.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSkinVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSphere.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlSprite.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlString.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlStringTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTable.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextDataParser.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTexture.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTextureAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangle.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriangleIntersectFactory.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMesh.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTriMeshIntersect.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlTypes.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlUV.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlversion.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertex.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVertexAnimKey.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlVisAnim.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\tlXBOXPrimBuffer.hpp"\ + "..\..\..\game\libs\pure3d\toollib\inc\toollib.hpp"\ + "..\..\..\game\libs\radmath\radmath\buildconfig.hpp"\ + "..\..\..\game\libs\radmath\radmath\geometry.hpp"\ + "..\..\..\game\libs\radmath\radmath\matrix.hpp"\ + "..\..\..\game\libs\radmath\radmath\platform\ps2\vu0microcode.hpp"\ + "..\..\..\game\libs\radmath\radmath\quaternion.hpp"\ + "..\..\..\game\libs\radmath\radmath\radmath.hpp"\ + "..\..\..\game\libs\radmath\radmath\random.hpp"\ + "..\..\..\game\libs\radmath\radmath\spline.hpp"\ + "..\..\..\game\libs\radmath\radmath\trig.hpp"\ + "..\..\..\game\libs\radmath\radmath\util.hpp"\ + "..\..\..\game\libs\radmath\radmath\vector.hpp"\ + "..\code\precompiled\PCH.h"\ + + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# ADD BASE CPP /Yc"PCH.h" +# ADD CPP /Yc"PCH.h" + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# ADD BASE CPP /Yc"PCH.h" +# ADD CPP /Yc"PCH.h" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\precompiled\PCH.h +# End Source File +# End Group +# Begin Group "AETemplates" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel +InputName=AEIntersectionLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel +InputName=AEIntersectionLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AERoadNodeTemplate.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AERoadNodeTemplate.mel +InputName=AERoadNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AERoadNodeTemplate.mel +InputName=AERoadNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AETELocatorSuppress.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETELocatorSuppress.mel +InputName=AETELocatorSuppress + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETELocatorSuppress.mel +InputName=AETELocatorSuppress + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AETEShowRoadSegButton.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETEShowRoadSegButton.mel +InputName=AETEShowRoadSegButton + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETEShowRoadSegButton.mel +InputName=AETEShowRoadSegButton + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AETreelineShapeNodeTemplate.mel + +!IF "$(CFG)" == "trackeditor - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETreelineShapeNodeTemplate.mel +InputName=AETreelineShapeNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "trackeditor - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETreelineShapeNodeTemplate.mel +InputName=AETreelineShapeNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# End Target +# End Project diff --git a/tools/trackeditor/build/trackeditor.vcproj b/tools/trackeditor/build/trackeditor.vcproj new file mode 100644 index 0000000..e516ec7 --- /dev/null +++ b/tools/trackeditor/build/trackeditor.vcproj @@ -0,0 +1,906 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="trackeditor" + SccProjectName="Perforce Project" + SccAuxPath="" + SccLocalPath="." + SccProvider="MSSCCI:Perforce SCM" + Keyword="MFCProj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Tools Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\include\,..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath,..\..\..\game\code\constants" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_RELEASE" + StringPooling="TRUE" + RuntimeLibrary="2" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="precompiled/pch.h" + PrecompiledHeaderFile="Release/PCH.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + IgnoreImportLibrary="TRUE" + AdditionalOptions="/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin +" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib WS2_32.LIB" + OutputFile="Release\trackeditor.mll" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + IgnoreDefaultLibraryNames="LIBC.lib;LIBCMT.lib;LIBCPMT.lib" + ProgramDatabaseFile=".\Release/trackeditor.pdb" + SubSystem="1" + ImportLibrary=".\Release/trackeditor.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/trackeditor.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy trackeditor.mll to Distribution and Maya dir." + CommandLine="copy .\Release\trackeditor.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\trackeditor.mll +copy .\Release\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;NDEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Tools Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath,..\..\..\game\libs\pure3d\sdks\Maya4_0\include\,..\..\..\game\code\constants" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_DEBUG" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="PCH.h" + PrecompiledHeaderFile=".\Debug/trackeditor.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + BrowseInformation="1" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + IgnoreImportLibrary="TRUE" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib" + OutputFile="Debug\trackeditor.mll" + LinkIncremental="2" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/trackeditor.pdb" + SubSystem="2" + ImportLibrary=".\Debug/trackeditor.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/trackeditor.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy trackeditor.mll to Distribution and Maya dir." + CommandLine="copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditord.mll +copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;_DEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="main" + Filter=""> + <File + RelativePath="..\code\main\constants.h"> + </File> + <File + RelativePath="..\code\main\pluginMain.cpp"> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\main\pluginMain.h"> + </File> + <File + RelativePath="..\code\main\shapeconstants.h"> + </File> + <File + RelativePath="..\code\main\trackeditor.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\main\trackeditor.h"> + </File> + </Filter> + <Filter + Name="commands" + Filter=""> + <File + RelativePath="..\code\commands\export.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\commands\export.h"> + </File> + <File + RelativePath="..\code\commands\intersectioncommands.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\commands\intersectioncommands.h"> + </File> + <File + RelativePath="..\code\commands\trackeditorcommands.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\commands\trackeditorcommands.h"> + </File> + <File + RelativePath="..\code\commands\treelinecommand.cpp"> + </File> + <File + RelativePath="..\code\commands\treelinecommand.h"> + </File> + </Filter> + <Filter + Name="nodes" + Filter=""> + <File + RelativePath="..\code\nodes\NU.h"> + </File> + <File + RelativePath="..\code\nodes\fenceline.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\nodes\fenceline.h"> + </File> + <File + RelativePath="..\code\nodes\intersection.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\nodes\intersection.h"> + </File> + <File + RelativePath="..\code\nodes\pedpath.cpp"> + </File> + <File + RelativePath="..\code\nodes\pedpath.h"> + </File> + <File + RelativePath="..\code\nodes\road.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\nodes\road.h"> + </File> + <File + RelativePath="..\code\nodes\tiledisplay.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\nodes\tiledisplay.h"> + </File> + <File + RelativePath="..\code\nodes\treelineshapenode.cpp"> + </File> + <File + RelativePath="..\code\nodes\treelineshapenode.h"> + </File> + <File + RelativePath="..\code\nodes\walllocator.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\nodes\walllocator.h"> + </File> + </Filter> + <Filter + Name="contexts" + Filter=""> + <File + RelativePath="..\code\contexts\bvcontext.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\contexts\bvcontext.h"> + </File> + <File + RelativePath="..\code\contexts\intersectioncontext.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\contexts\intersectioncontext.h"> + </File> + <File + RelativePath="..\code\contexts\ppcontext.cpp"> + </File> + <File + RelativePath="..\code\contexts\ppcontext.h"> + </File> + <File + RelativePath="..\code\contexts\treelinecontext.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\contexts\treelinecontext.h"> + </File> + </Filter> + <Filter + Name="utility" + Filter=""> + <File + RelativePath="..\..\globalcode\utility\GLExt.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\GLExt.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\overlaymarquee.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\overlaymarquee.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\stdafx.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\transformmatrix.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\transformmatrix.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\util.c"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\util.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\winutil.c"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + PrecompiledHeaderThrough="precompiled\pch.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\..\globalcode\utility\winutil.h"> + </File> + </Filter> + <Filter + Name="mel scripts" + Filter=""> + <File + RelativePath="..\code\scripts\te_BVContext.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_IntersectionContext.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_PPContext.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_cleanup.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_editorwindow.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_globals.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_main.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_setup.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\te_treelineContext.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="precompiled header" + Filter=""> + <File + RelativePath="..\code\precompiled\PCH.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + PrecompiledHeaderThrough="PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\precompiled\PCH.h"> + </File> + </Filter> + <Filter + Name="AETemplates" + Filter=""> + <File + RelativePath="..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AERoadNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AETELocatorSuppress.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AETEShowRoadSegButton.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AETreelineShapeNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/trackeditor/build/trackeditor.vcxproj b/tools/trackeditor/build/trackeditor.vcxproj new file mode 100644 index 0000000..84b6151 --- /dev/null +++ b/tools/trackeditor/build/trackeditor.vcxproj @@ -0,0 +1,438 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Tools Debug|Win32"> + <Configuration>Tools Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Tools Release|Win32"> + <Configuration>Tools Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <SccProjectName> + </SccProjectName> + <SccAuxPath /> + <SccLocalPath> + </SccLocalPath> + <SccProvider> + </SccProvider> + <Keyword>MFCProj</Keyword> + <ProjectGuid>{8D79E782-9747-4732-A869-CA630AC7D3C0}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <OutDir>.\Release\</OutDir> + <IntDir>.\Release\</IntDir> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <OutDir>.\Debug\</OutDir> + <IntDir>.\Debug\</IntDir> + <IgnoreImportLibrary>true</IgnoreImportLibrary> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <ClCompile> + <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> + <AdditionalIncludeDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;..\..\..\game\code\constants;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_RELEASE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader /> + <PrecompiledHeaderFile>precompiled/pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>Release/PCH.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Release/</AssemblerListingLocation> + <ObjectFileName>.\Release/</ObjectFileName> + <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin + %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaUI.lib;OpenMayaAnim.lib;WS2_32.LIB;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Release\trackeditor.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <IgnoreSpecificDefaultLibraries>LIBC.lib;LIBCMT.lib;LIBCPMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <ProgramDatabaseFile>.\Release/trackeditor.pdb</ProgramDatabaseFile> + <SubSystem>Console</SubSystem> + <ImportLibrary>.\Release/trackeditor.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Release/trackeditor.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy trackeditor.mll to Distribution and Maya dir.</Message> + <Command>copy .\Release\trackeditor.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\trackeditor.mll +copy .\Release\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;..\..\..\game\code\constants;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_DEBUG;WIN32;_WIN32;_WINDOWS;NT_PLUGIN;RAD_WIN32;RAD_PC;RAD_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <PrecompiledHeader /> + <PrecompiledHeaderFile>PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>.\Debug/trackeditor.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Debug/</AssemblerListingLocation> + <ObjectFileName>.\Debug/</ObjectFileName> + <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName> + <BrowseInformation>true</BrowseInformation> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaUI.lib;OpenMayaAnim.lib;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Debug\trackeditor.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>.\Debug/trackeditor.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <ImportLibrary>.\Debug/trackeditor.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Debug/trackeditor.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy trackeditor.mll to Distribution and Maya dir.</Message> + <Command>copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditord.mll +copy .\Debug\trackeditor.mll C:\AW\Maya4.0\bin\plug-ins\trackeditor.mll +</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\code\main\constants.h" /> + <ClInclude Include="..\code\main\pluginMain.h" /> + <ClInclude Include="..\code\main\shapeconstants.h" /> + <ClInclude Include="..\code\main\trackeditor.h" /> + <ClInclude Include="..\code\commands\export.h" /> + <ClInclude Include="..\code\commands\intersectioncommands.h" /> + <ClInclude Include="..\code\commands\trackeditorcommands.h" /> + <ClInclude Include="..\code\commands\treelinecommand.h" /> + <ClInclude Include="..\code\nodes\NU.h" /> + <ClInclude Include="..\code\nodes\fenceline.h" /> + <ClInclude Include="..\code\nodes\intersection.h" /> + <ClInclude Include="..\code\nodes\pedpath.h" /> + <ClInclude Include="..\code\nodes\road.h" /> + <ClInclude Include="..\code\nodes\tiledisplay.h" /> + <ClInclude Include="..\code\nodes\treelineshapenode.h" /> + <ClInclude Include="..\code\nodes\walllocator.h" /> + <ClInclude Include="..\code\contexts\bvcontext.h" /> + <ClInclude Include="..\code\contexts\intersectioncontext.h" /> + <ClInclude Include="..\code\contexts\ppcontext.h" /> + <ClInclude Include="..\code\contexts\treelinecontext.h" /> + <ClInclude Include="..\..\globalcode\utility\GLExt.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h" /> + <ClInclude Include="..\..\globalcode\utility\MUI.h" /> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h" /> + <ClInclude Include="..\..\globalcode\utility\overlaymarquee.h" /> + <ClInclude Include="..\..\globalcode\utility\stdafx.h" /> + <ClInclude Include="..\..\globalcode\utility\transformmatrix.h" /> + <ClInclude Include="..\..\globalcode\utility\util.h" /> + <ClInclude Include="..\..\globalcode\utility\winutil.h" /> + <ClInclude Include="..\code\precompiled\PCH.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\main\trackeditor.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\commands\export.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\commands\intersectioncommands.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\commands\trackeditorcommands.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\commands\treelinecommand.cpp" /> + <ClCompile Include="..\code\nodes\fenceline.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\nodes\intersection.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\nodes\pedpath.cpp" /> + <ClCompile Include="..\code\nodes\road.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\nodes\tiledisplay.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\nodes\treelineshapenode.cpp" /> + <ClCompile Include="..\code\nodes\walllocator.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\contexts\bvcontext.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\contexts\intersectioncontext.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\contexts\ppcontext.cpp" /> + <ClCompile Include="..\code\contexts\treelinecontext.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\GLExt.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp" /> + <ClCompile Include="..\..\globalcode\utility\overlaymarquee.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\transformmatrix.cpp"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\util.c"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\winutil.c"> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">precompiled\pch.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Create</PrecompiledHeader> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">PCH.h</PrecompiledHeaderFile> + </ClCompile> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\te_BVContext.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_IntersectionContext.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_PPContext.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_cleanup.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_editorwindow.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_globals.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_main.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_setup.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_treelineContext.mel"> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AERoadNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETELocatorSuppress.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETEShowRoadSegButton.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETreelineShapeNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.vcxproj"> + <Project>{6d333c70-a27d-4e25-ad26-bb9e20558b8f}</Project> + <ReferenceOutputAssembly>false</ReferenceOutputAssembly> + </ProjectReference> + <ProjectReference Include="..\..\..\game\libs\pure3d\toollib\toollib_extras.vcxproj"> + <Project>{cdb92e4a-1e5d-49a8-8153-34264b3fef29}</Project> + <ReferenceOutputAssembly>false</ReferenceOutputAssembly> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/tools/trackeditor/build/trackeditor.vcxproj.filters b/tools/trackeditor/build/trackeditor.vcxproj.filters new file mode 100644 index 0000000..822d311 --- /dev/null +++ b/tools/trackeditor/build/trackeditor.vcxproj.filters @@ -0,0 +1,251 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="main"> + <UniqueIdentifier>{7aa3607e-360c-466f-82ae-abf6f985953c}</UniqueIdentifier> + </Filter> + <Filter Include="commands"> + <UniqueIdentifier>{d3d48be8-1aeb-450f-a824-b321cc40f4f2}</UniqueIdentifier> + </Filter> + <Filter Include="nodes"> + <UniqueIdentifier>{b4375917-2908-4939-b7c2-be6eeac47c5f}</UniqueIdentifier> + </Filter> + <Filter Include="contexts"> + <UniqueIdentifier>{d4bed8bc-73b8-4016-903d-7e43fb5b6474}</UniqueIdentifier> + </Filter> + <Filter Include="utility"> + <UniqueIdentifier>{f9a9c2c9-d17e-4ef9-b109-1f516775a8e3}</UniqueIdentifier> + </Filter> + <Filter Include="mel scripts"> + <UniqueIdentifier>{a5619506-109a-41b8-a033-fe6a1100443e}</UniqueIdentifier> + </Filter> + <Filter Include="precompiled header"> + <UniqueIdentifier>{c08cb6ab-ec6f-44fa-854e-7567fdae9bdc}</UniqueIdentifier> + </Filter> + <Filter Include="AETemplates"> + <UniqueIdentifier>{3efb7bc8-741f-4cbd-939e-c757b812ed2d}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\code\main\constants.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\pluginMain.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\shapeconstants.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\trackeditor.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\export.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\intersectioncommands.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\trackeditorcommands.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\treelinecommand.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\NU.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\fenceline.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\intersection.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\pedpath.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\road.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\tiledisplay.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\treelineshapenode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\walllocator.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\bvcontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\intersectioncontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\ppcontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\treelinecontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\GLExt.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MUI.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\overlaymarquee.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\stdafx.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\transformmatrix.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\util.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\winutil.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\code\precompiled\PCH.h"> + <Filter>precompiled header</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp"> + <Filter>main</Filter> + </ClCompile> + <ClCompile Include="..\code\main\trackeditor.cpp"> + <Filter>main</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\export.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\intersectioncommands.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\trackeditorcommands.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\treelinecommand.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\fenceline.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\intersection.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\pedpath.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\road.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\tiledisplay.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\treelineshapenode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\walllocator.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\bvcontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\intersectioncontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\ppcontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\treelinecontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\GLExt.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\overlaymarquee.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\transformmatrix.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\util.c"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\winutil.c"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <Filter>precompiled header</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\te_BVContext.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_IntersectionContext.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_PPContext.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_cleanup.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_editorwindow.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_globals.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_main.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_setup.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\te_treelineContext.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEIntersectionLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AERoadNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETELocatorSuppress.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETEShowRoadSegButton.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETreelineShapeNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/tools/trackeditor/code/AETemplates/AEIntersectionLocatorNodeTemplate.mel b/tools/trackeditor/code/AETemplates/AEIntersectionLocatorNodeTemplate.mel new file mode 100644 index 0000000..740b05f --- /dev/null +++ b/tools/trackeditor/code/AETemplates/AEIntersectionLocatorNodeTemplate.mel @@ -0,0 +1,20 @@ +global proc AEIntersectionLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Intersection Attributes" -collapse 0; + + editorTemplate -addControl "IntersectionType"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); + + editorTemplate -suppress "localPosition"; +} +
\ No newline at end of file diff --git a/tools/trackeditor/code/AETemplates/AERoadNodeTemplate.mel b/tools/trackeditor/code/AETemplates/AERoadNodeTemplate.mel new file mode 100644 index 0000000..27c4431 --- /dev/null +++ b/tools/trackeditor/code/AETemplates/AERoadNodeTemplate.mel @@ -0,0 +1,29 @@ +global proc AERoadNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Road Attributes" -collapse 0; + + editorTemplate -addControl "IntersectionStart"; + editorTemplate -addControl "IntersectionEnd"; + editorTemplate -addControl "density"; + editorTemplate -addControl "speed"; + editorTemplate -addControl "difficulty"; + editorTemplate -addControl "shortCut"; + + editorTemplate -callCustom "AETEShowRoadSegNew" + "AETEShowRoadSegReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); + + editorTemplate -suppress "localPosition"; +} +
\ No newline at end of file diff --git a/tools/trackeditor/code/AETemplates/AETELocatorSuppress.mel b/tools/trackeditor/code/AETemplates/AETELocatorSuppress.mel new file mode 100644 index 0000000..13a6d00 --- /dev/null +++ b/tools/trackeditor/code/AETemplates/AETELocatorSuppress.mel @@ -0,0 +1,37 @@ +global proc AETELocatorSuppress( string $nodeName ) +{ + editorTemplate -suppress "inputTranslate"; + editorTemplate -suppress "input"; + editorTemplate -suppress "caching"; + editorTemplate -suppress "nodeState"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "template"; + editorTemplate -suppress "ghosting"; + editorTemplate -suppress "instObjGroups"; + editorTemplate -suppress "compInstObjGroups"; + editorTemplate -suppress "castsShadows"; + editorTemplate -suppress "receiveShadows"; + editorTemplate -suppress "depthJitter"; + editorTemplate -suppress "motionBlur"; + editorTemplate -suppress "renderInfo"; + editorTemplate -suppress "primaryVisibility"; + editorTemplate -suppress "visibleInReflections"; + editorTemplate -suppress "visibleInRefractions"; + editorTemplate -suppress "geometryAntialiasingOverride"; + editorTemplate -suppress "antialiasingLevel"; + editorTemplate -suppress "shadingSamplesOverride"; + editorTemplate -suppress "shadingSamples"; + editorTemplate -suppress "maxShadingSamples"; + editorTemplate -suppress "volumeSamplesOverride"; + editorTemplate -suppress "volumeSamples"; + editorTemplate -suppress "maxVisibilitySamplesOverride"; + editorTemplate -suppress "maxVisibilitySamples"; + editorTemplate -suppress "boundingBoxScale"; + editorTemplate -suppress "drawOverride"; + editorTemplate -suppress "useObjectColor"; + editorTemplate -suppress "objectColor"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "lodVisibility"; +}
\ No newline at end of file diff --git a/tools/trackeditor/code/AETemplates/AETEShowRoadSegButton.mel b/tools/trackeditor/code/AETemplates/AETEShowRoadSegButton.mel new file mode 100644 index 0000000..3ffbeb5 --- /dev/null +++ b/tools/trackeditor/code/AETemplates/AETEShowRoadSegButton.mel @@ -0,0 +1,29 @@ +global proc AETEShowRoadSegNew( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "te_MCB_ShowRoadFromSelected()"; + + button -label "Show Road Segments" -command $command TEShowRoadSegsButton; + + setParent ..; + + select $names[0]; +} + + +global proc AETEShowRoadSegReplace( string $nodeName ) +{ + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "te_MCB_ShowRoadFromSelected"; + + button -e -command $command TEShowRoadSegsButton; + + select $names[0]; +}
\ No newline at end of file diff --git a/tools/trackeditor/code/AETemplates/AETreelineShapeNodeTemplate.mel b/tools/trackeditor/code/AETemplates/AETreelineShapeNodeTemplate.mel new file mode 100644 index 0000000..766ed13 --- /dev/null +++ b/tools/trackeditor/code/AETemplates/AETreelineShapeNodeTemplate.mel @@ -0,0 +1,41 @@ +global proc AETreelineShapeNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Treeline Attributes" -collapse false; + + editorTemplate -addControl "material"; + + editorTemplate -addControl "uscale"; + + editorTemplate -addControl "height"; + + editorTemplate -suppress "colour"; + + editorTemplate -suppress "alpha"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AETELocatorSuppress( $nodeName ); + + editorTemplate -suppress "controlPoints"; + editorTemplate -suppress "weights"; + editorTemplate -suppress "uvSet"; + editorTemplate -suppress "tweak"; + editorTemplate -suppress "relativeTweak"; + editorTemplate -suppress "currentUVSet"; + editorTemplate -suppress "doubleSided"; + editorTemplate -suppress "opposite"; + editorTemplate -suppress "smoothShading"; + editorTemplate -suppress "featureDisplacement"; + editorTemplate -suppress "initialSampleRate"; + editorTemplate -suppress "textureThreshold"; + editorTemplate -suppress "normalThreshold"; + editorTemplate -suppress "extraSampleRate"; +} +
\ No newline at end of file diff --git a/tools/trackeditor/code/commands/export.cpp b/tools/trackeditor/code/commands/export.cpp new file mode 100644 index 0000000..77b7328 --- /dev/null +++ b/tools/trackeditor/code/commands/export.cpp @@ -0,0 +1,193 @@ +#include "precompiled/PCH.h" + +#include "export.h" +#include "main/constants.h" +#include "nodes/walllocator.h" +#include "nodes/fenceline.h" +#include "nodes/intersection.h" +#include "nodes/road.h" +#include "nodes/pedpath.h" +#include "utility/mui.h" +#include "utility/mext.h" + +#include <toollib.hpp> + +const char* ExportCommand::stringId = "TE_Export"; +bool ExportCommand::sRegisteredChunks = false; + + +ExportCommand::ExportCommand() {}; +ExportCommand::~ExportCommand() {}; + +//============================================================================== +// ExportCommand::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* ExportCommand::creator() +{ + return new ExportCommand(); +} + +//============================================================================== +// ExportCommand::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus ExportCommand::doIt( const MArgList& args ) +{ + if ( !sRegisteredChunks ) + { + tlDataChunk::RegisterDefaultChunks(); + sRegisteredChunks = true; + } + + //Go through all the chunks looking for the types we want and exporting them. + //Alternatively, we could go thtough all the chunks and attempt to access the + //IExportable interface and then export if the interface exists... + + //Args are all, or selected. + + const unsigned char FILE_NAME_SIZE = 255; + char filePath[FILE_NAME_SIZE]; + filePath[0] = '\0'; + + if ( MUI::FileDialog( filePath, + FILE_NAME_SIZE, + "Track Editor Export", + "Pure3D(*.p3d)|*.p3d|All Files(*.*)|*.*||", + "p3d", + MUI::SAVE ) ) + { + //TODO: add selected. + MItDag dagIt( MItDag::kBreadthFirst, MFn::kLocator ); + + tlDataChunk* outChunk = new tlDataChunk; + + //Put in a history chunk. + tlHistory history; + +// char hist[256]; +// sprintf(hist, "Track Editor version: 2.0, toollib version: %s", tlversion); +// +// history.AddLine( hist ); + +// outChunk->AppendSubChunk( history.Chunk(), 0 ); + + bool deleteLast = false; + MFnDependencyNode fnNode; + MObject lastObj; + MTypeId id; + + while ( !dagIt.isDone() ) + { + fnNode.setObject( dagIt.item() ); + id = fnNode.typeId(); + + if ( id == FenceLineNode::id ) + { + //Export a wall locator; + tlDataChunk* newChunk = FenceLineNode::Export( dagIt.item(), history ); + + if ( newChunk ) + { + //Append this to the output file. + outChunk->AppendSubChunk( newChunk ); + } + else + { + //Time to go away. + deleteLast = true; + } + } + else if ( id == IntersectionLocatorNode::id ) + { + tlDataChunk* newChunk = IntersectionLocatorNode::Export( dagIt.item(), history ); + + if ( newChunk ) + { + //Append this to the output file. + outChunk->AppendSubChunk( newChunk ); + } + else + { + //Time to go away. + deleteLast = true; + } + } + else if ( id == RoadNode::id ) + { + tlDataChunk* newChunk = RoadNode::Export( dagIt.item(), history, outChunk ); + + if ( newChunk ) + { + //Append this to the output file. + outChunk->AppendSubChunk( newChunk ); + } + else + { + //Time to go away. + deleteLast = true; + } + } + else if ( id == PedPathNode::id ) + { + tlDataChunk* newChunk = PedPathNode::Export( dagIt.item(), history ); + + if ( newChunk ) + { + //Append this to the output file. + outChunk->AppendSubChunk( newChunk ); + } + else + { + //Time to go away. + deleteLast = true; + } + } + + if ( deleteLast ) + { + lastObj = dagIt.item(); + } + + dagIt.next(); + + if ( deleteLast ) + { + MExt::DisplayWarning( "Deleting useless node: %s", fnNode.name().asChar() ); + MExt::DeleteNode( lastObj, true ); + deleteLast = false; + } + } + + tlFile output(new tlFileByteStream(filePath, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + + MGlobal::displayError("Unable to write file!"); + + delete outChunk; + return MS::kFailure; + } + + //Sort it out.. + outChunk->SortSubChunks(); + outChunk->Write(&output); + + delete outChunk; + } + + return MS::kSuccess; +} diff --git a/tools/trackeditor/code/commands/export.h b/tools/trackeditor/code/commands/export.h new file mode 100644 index 0000000..f3c031c --- /dev/null +++ b/tools/trackeditor/code/commands/export.h @@ -0,0 +1,26 @@ +#include "precompiled/PCH.h" + +#ifndef EXPORT_COMMAND_H +#define EXPORT_COMMAND_H + +class ExportCommand : MPxCommand +{ +public: + enum ExportArg + { + SELECTED, + ALL + }; + + ExportCommand(); + ~ExportCommand(); + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; + +private: + static bool sRegisteredChunks; +}; +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/commands/intersectioncommands.cpp b/tools/trackeditor/code/commands/intersectioncommands.cpp new file mode 100644 index 0000000..4733762 --- /dev/null +++ b/tools/trackeditor/code/commands/intersectioncommands.cpp @@ -0,0 +1,449 @@ +#include "precompiled/PCH.h" + +#include "intersectioncommands.h" +#include "utility/mext.h" +#include "nodes/road.h" +#include "main/trackeditor.h" +#include "nodes/intersection.h" + + +const char* CreateRoadCmd::stringId = "TE_CreateRoad"; +const char* AddIntersectionToRoadCmd::stringId = "TE_AddIntersectionToRoad"; + + +//============================================================================== +// CreateRoadCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* CreateRoadCmd::creator() +{ + return new CreateRoadCmd(); +} + +//============================================================================== +// CreateRoadCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus CreateRoadCmd::doIt( const MArgList& args ) +{ + //Take all the selected road segments and create a road from them. + //If there is a segment that has not been roadified, highlight that one and return an error message. + + MSelectionList selectList; + MGlobal::getActiveSelectionList( selectList ); + MItSelectionList itSelect( selectList, MFn::kMesh ); + + if ( selectList.length() <= 0 || itSelect.isDone() ) + { + MExt::DisplayWarning( "Nothing to do, please select road segments!" ); + return MStatus::kSuccess; + } + + MObjectArray segArray; + MObject obj; + MFnMesh fnMesh; + MPlug whichRoadPlug; + MStatus status; + + while ( !itSelect.isDone() ) + { + //Gather all the road segments and add them to the new road. + itSelect.getDependNode( obj ); + + fnMesh.setObject( obj ); + + whichRoadPlug = fnMesh.findPlug( MString( "teWhichRoad" ), &status ); + + if ( status == MStatus::kSuccess ) + { + //This is one of them. + segArray.append( obj ); + } + + itSelect.next(); + } + + if ( segArray.length() <= 0 ) + { + //There were no appropriate segs in the selection. + MExt::DisplayWarning( "Nothing to do, please select road segments!" ); + return MStatus::kSuccess; + } + + MObject newRoad; + MObject newRoadT; + + MExt::CreateNode( newRoad, newRoadT, MString( RoadNode::stringId ) ); + + assert( !newRoad.isNull() ); + + unsigned int i; + for ( i = 0; i < segArray.length(); ++i ) + { + //Test to see if this road seg is already connected. + if ( MExt::IsConnected( segArray[ i ], "teWhichRoad" ) ) + { + MExt::DisconnectAll( segArray[ i ], "teWhichRoad" ); + } + + MExt::Connect( segArray[ i ], "teWhichRoad", newRoad, RoadNode::ROAD_SEG_NAME_LONG ); + } + + TrackEditor::AddChild( newRoad ); + + return MStatus::kSuccess; +} + + +//============================================================================== +// AddIntersectionToRoadCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* AddIntersectionToRoadCmd::creator() +{ + return new AddIntersectionToRoadCmd(); +} + +//============================================================================== +// AddIntersectionToRoadCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus AddIntersectionToRoadCmd::doIt( const MArgList& args ) +{ + MStatus status; + + //Arg 0 is the name of the intersection (the road is selected) + //Arg 1 is whether it is a start or end point on the road. + + assert( args.length() == 2 ); + + MObjectArray roadArray; + + if ( GetRoadsFromSelectionList( roadArray ) ) + { + MString intersectionName; + args.get( 0, intersectionName ); + + if ( intersectionName == MString( "" ) ) + { + MExt::DisplayWarning( "Must have an intersection selected in the editor." ); + return MStatus::kSuccess; + } + + bool isEnd; + args.get( 1, isEnd ); + + MDagPath dagPath; + if ( !MExt::FindDagNodeByName( &dagPath, intersectionName ) ) + { + MExt::DisplayWarning( "The Intersection: %s does not exist!", intersectionName.asChar() ); + return MStatus::kSuccess; + } + + MFnDagNode fnIntersectionDagNode( dagPath ); + + unsigned int i; + for ( i = 0; i < roadArray.length(); ++i ) + { + if ( isEnd ) + { + MExt::DisconnectAll( roadArray[i], RoadNode::INTERSECTION_END_LONG ); + MExt::Connect( roadArray[i], RoadNode::INTERSECTION_END_LONG, fnIntersectionDagNode.object(), IntersectionLocatorNode::ROAD_LONG ); + } + else + { + MExt::DisconnectAll( roadArray[i], RoadNode::INTERSECTION_START_LONG ); + MExt::Connect( roadArray[i], RoadNode::INTERSECTION_START_LONG, fnIntersectionDagNode.object(), IntersectionLocatorNode::ROAD_LONG ); + } + } + } + + return MStatus::kSuccess; +} + + +const char* ShowRoadCmd::stringId = "TE_ShowRoad"; + +//============================================================================== +// ShowRoadCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* ShowRoadCmd::creator() +{ + return new ShowRoadCmd(); +} + +//============================================================================== +// ShowRoadCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus ShowRoadCmd::doIt( const MArgList& args ) +{ + + MObject road; + + if ( GetRoadFromSelectionList( road ) ) + { + MString cmd; + + MFnDependencyNode fnNode( road ); + MPlug roadPlug = fnNode.findPlug( MString( RoadNode::ROAD_SEG_NAME_LONG ) ); + assert( roadPlug.isArray() ); + + MGlobal::clearSelectionList(); + + MPlugArray source, dest; + MExt::ResolveConnections( &source, &dest, roadPlug, AS_DEST ); + + assert( source.length() ); + + unsigned int i; + for ( i = 0; i < source.length(); ++i ) + { + fnNode.setObject( source[i].node() ); + cmd = MString( "select -add " ) + fnNode.name(); + + MGlobal::executeCommand( cmd ); + } + + fnNode.setObject( road ); + cmd = MString("select -add ") + fnNode.name(); + MGlobal::executeCommand( cmd ); + } + + return MStatus::kSuccess; +} + + +const char* DestroyRoadCmd::stringId = "TE_DestroyRoad"; + +//============================================================================== +// DestroyRoadCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* DestroyRoadCmd::creator() +{ + return new DestroyRoadCmd(); +} + +//============================================================================== +// DestroyRoadCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus DestroyRoadCmd::doIt( const MArgList& args ) +{ + + MObject road; + + if ( GetRoadFromSelectionList( road ) ) + { + MExt::DeleteNode( road, true ); + } + + return MStatus::kSuccess; +} + + + +//============================================================================== +// GetRoadFromSelectionList +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& road ) +// +// Return: bool +// +//============================================================================== +bool GetRoadFromSelectionList( MObject& road ) +{ + MStatus status; + + MSelectionList selectList; + MGlobal::getActiveSelectionList( selectList ); + + if ( selectList.length() <= 0 ) + { + MExt::DisplayWarning( "A road segment must be selected!" ); + return false; + } + else + { + MObject segment; + selectList.getDependNode( 0, segment ); + MFnDagNode fnNode( segment ); + + if ( fnNode.typeName() == MString( RoadNode::stringId ) ) + { + //this is a road segment + road = fnNode.object(); + } + else + { + //Test to make sure the selected item is a road segment. + MFn::Type type = fnNode.type(); + + if ( fnNode.typeName() == MString( "transform" ) ) + { + //We want the child of this, not the transform. + fnNode.setObject( fnNode.child( 0 ) ); + } + + MPlug whichRoadPlug = fnNode.findPlug( MString( "teWhichRoad" ), &status ); + + if ( status ) + { + //Get the intersection connected to this road and select all the road segs + //attached to it. + if ( whichRoadPlug.isConnected() ) + { + //Get the road Locator; + MPlugArray plugs; + whichRoadPlug.connectedTo( plugs, false, true ); + + assert( plugs.length() > 0 ); + + //Get to road attached to the segment. + road = plugs[ 0 ].node(); + } + else + { + MExt::DisplayWarning( "This road segment is not part of a road!" ); + return false; + } + } + else + { + MExt::DisplayWarning( "A road segment must be selected!" ); + return false; + } + } + } + + return true; +} + +//============================================================================== +// GetRoadsFromSelectionList +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& road ) +// +// Return: bool +// +//============================================================================== +bool GetRoadsFromSelectionList( MObjectArray& roadArray ) +{ + MStatus status; + + MSelectionList selectList; + MGlobal::getActiveSelectionList( selectList ); + + if ( selectList.length() <= 0 ) + { + MExt::DisplayWarning( "At least one road segment must be selected!" ); + return false; + } + else + { + unsigned int i; + for ( i = 0; i < selectList.length(); ++i ) + { + MObject node; + selectList.getDependNode( i, node ); + MFnDagNode fnNode( node ); + + if ( fnNode.typeName() == MString( RoadNode::stringId ) ) + { + //this is a road node + roadArray.append( fnNode.object() ); + } + else + { + //Test to make sure the selected item is a road segment. + MFn::Type type = fnNode.type(); + + if ( fnNode.typeName() == MString( "transform" ) ) + { + //We want the child of this, not the transform. + fnNode.setObject( fnNode.child( 0 ) ); + } + + MPlug whichRoadPlug = fnNode.findPlug( MString( "teWhichRoad" ), &status ); + + if ( status ) + { + //Get the intersection connected to this road and select all the road segs + //attached to it. + if ( whichRoadPlug.isConnected() ) + { + //Get the road Locator; + MPlugArray plugs; + whichRoadPlug.connectedTo( plugs, false, true ); + + assert( plugs.length() > 0 ); + + //Get to road attached to the segment. + roadArray.append( plugs[ 0 ].node() ); + } + else + { + MExt::DisplayWarning( "This road segment: %s is not part of a road!", fnNode.name().asChar() ); + return false; + } + } + } + } + } + + return true; +}
\ No newline at end of file diff --git a/tools/trackeditor/code/commands/intersectioncommands.h b/tools/trackeditor/code/commands/intersectioncommands.h new file mode 100644 index 0000000..f2a261b --- /dev/null +++ b/tools/trackeditor/code/commands/intersectioncommands.h @@ -0,0 +1,60 @@ +#include "precompiled/PCH.h" + +#ifndef INTERSECTION_COMMANDS +#define INTERSECTION_COMMANDS + +class CreateRoadCmd : public MPxCommand +{ +public: + CreateRoadCmd() {}; + ~CreateRoadCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class AddIntersectionToRoadCmd : public MPxCommand +{ +public: + AddIntersectionToRoadCmd() {}; + ~AddIntersectionToRoadCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class ShowRoadCmd : public MPxCommand +{ +public: + ShowRoadCmd() {}; + ~ShowRoadCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class DestroyRoadCmd : public MPxCommand +{ +public: + DestroyRoadCmd() {}; + ~DestroyRoadCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + + + +//Global tool like thing. +bool GetRoadFromSelectionList( MObject& road ); +bool GetRoadsFromSelectionList( MObjectArray& road ); + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/commands/trackeditorcommands.cpp b/tools/trackeditor/code/commands/trackeditorcommands.cpp new file mode 100644 index 0000000..29aeb76 --- /dev/null +++ b/tools/trackeditor/code/commands/trackeditorcommands.cpp @@ -0,0 +1,222 @@ +#include "precompiled/PCH.h" + +#include "trackeditorcommands.h" +#include "main/trackeditor.h" +#include "utility/mext.h" +#include "main/constants.h" + +//TEStateChange +const char* TEStateChangeCommand::stringId = "TE_StateChange"; + +//============================================================================== +// TEStateChangeCommand::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* TEStateChangeCommand::creator() +{ + return new TEStateChangeCommand(); +} + +//============================================================================== +// TEStateChangeCommand::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus TEStateChangeCommand::doIt( const MArgList& args ) +{ + assert( args.length() == 1 ); + + int arg; + args.get( 0, arg ); + + TrackEditor::SetEditMode( (TrackEditor::EditMode) arg ); + + return MStatus::kSuccess; +} + +//TEGetSelectedVertexPosition + +const char* TEGetSelectedVertexPosition::stringId = "TE_GetSelectedVertexPosition"; + +//============================================================================== +// TEGetSelectedVertexPosition::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* TEGetSelectedVertexPosition::creator() +{ + return new TEGetSelectedVertexPosition(); +} + +//============================================================================== +// TEGetSelectedVertexPosition::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus TEGetSelectedVertexPosition::doIt( const MArgList& args ) +{ + MStatus status; + MDoubleArray returnVal( 3, 0 ); + + assert( args.length() == 1 ); //Only one arg. + + MString argString; + args.get( 0, argString ); + + MSelectionList activeList; + MGlobal::getActiveSelectionList(activeList); + + MItSelectionList iter( activeList, MFn::kMeshVertComponent, &status); + + //We're only going to deal with the first selected item. Don't select more + //Than one please. + + if ( !iter.isDone() ) + { + MDagPath item; + MObject component; + iter.getDagPath( item, component ); + // do something with it + + MStatus isMeshIT; + MItMeshVertex mITVert( item , component, &isMeshIT ); + + if(isMeshIT == MS::kSuccess) + { + MPoint vertPos; + double x, y, z; + + if ( argString == MString( "local" ) ) + { + vertPos = mITVert.position( MSpace::kObject, &status ); + x = vertPos[0]; + y = vertPos[1]; + z = vertPos[2]; + } + else //"world" + { + vertPos = mITVert.position( MSpace::kWorld, &status ); + x = vertPos[0]; + y = vertPos[1]; + z = vertPos[2]; + } + + returnVal[0] = x / TEConstants::Scale; + returnVal[1] = y / TEConstants::Scale; + returnVal[2] = z / TEConstants::Scale; + + } + + iter.next(); //This is to test if there are more verts than needed. + } + else + { + MExt::DisplayWarning("No vertices selected!"); + } + + if ( !iter.isDone() ) + { + MExt::DisplayWarning("Too many vertices selected!"); + } + + + MPxCommand::setResult( returnVal ); + + return MStatus::kSuccess; +} + + +//TEGetSelectedVertexIndex + +const char* TEGetSelectedVertexIndex::stringId = "TE_GetSelectedVertexIndex"; + +//============================================================================== +// TEGetSelectedVertexIndex::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* TEGetSelectedVertexIndex::creator() +{ + return new TEGetSelectedVertexIndex(); +} + +//============================================================================== +// TEGetSelectedVertexIndex::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus TEGetSelectedVertexIndex::doIt( const MArgList& args ) +{ + int returnVal = -1; + + MStatus status; + MSelectionList activeList; + MGlobal::getActiveSelectionList(activeList); + + MItSelectionList iter( activeList, MFn::kMeshVertComponent, &status); + + //We're only going to deal with the first selected item. Don't select more + //Than one please. + + if ( !iter.isDone() ) + { + MDagPath item; + MObject component; + iter.getDagPath( item, component ); + // do something with it + + MStatus isMeshIT; + MItMeshVertex mITVert( item , component, &isMeshIT ); + + if(isMeshIT == MS::kSuccess) + { + returnVal = mITVert.index(); + } + + iter.next(); //This is to test if there are more verts than needed. + } + else + { + MExt::DisplayWarning("No vertices selected!"); + } + + if ( !iter.isDone() ) + { + MExt::DisplayWarning("Too many vertices selected!"); + } + + MPxCommand::setResult( returnVal ); + + return MStatus::kSuccess; +} diff --git a/tools/trackeditor/code/commands/trackeditorcommands.h b/tools/trackeditor/code/commands/trackeditorcommands.h new file mode 100644 index 0000000..990ffd7 --- /dev/null +++ b/tools/trackeditor/code/commands/trackeditorcommands.h @@ -0,0 +1,42 @@ +#include "precompiled/PCH.h" + +#ifndef TE_COMMANDS_H +#define TE_COMMANDS_H + +class TEStateChangeCommand : public MPxCommand +{ +public: + TEStateChangeCommand() {}; + ~TEStateChangeCommand() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class TEGetSelectedVertexPosition : public MPxCommand +{ +public: + TEGetSelectedVertexPosition() {}; + ~TEGetSelectedVertexPosition() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class TEGetSelectedVertexIndex : public MPxCommand +{ +public: + TEGetSelectedVertexIndex() {}; + ~TEGetSelectedVertexIndex() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/commands/treelinecommand.cpp b/tools/trackeditor/code/commands/treelinecommand.cpp new file mode 100644 index 0000000..25f22de --- /dev/null +++ b/tools/trackeditor/code/commands/treelinecommand.cpp @@ -0,0 +1,323 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: SnapSelectedTreelines.cpp +// +// Description: Implement SnapSelectedTreelines +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== + + +//======================================== +// Project Includes +//======================================== +#include "commands/TreeLineCommand.h" +#include "main/trackeditor.h" +#include "nodes/treelineshapenode.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +const char* SnapSelectedTreelines::stringId = "TE_SnapSelectedTreelines"; +const char* ConvertTreelineToGeometry::stringId = "TE_ConvertTreelineToGeometry"; +const char* SetDeleteTreeline::stringId = "TE_SetDeleteTreeline"; + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// SnapSelectedTreelines::SnapSelectedTreelines +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SnapSelectedTreelines::SnapSelectedTreelines() +{ +} + +//============================================================================== +// SnapSelectedTreelines::~SnapSelectedTreelines +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SnapSelectedTreelines::~SnapSelectedTreelines() +{ +} + +//============================================================================= +// SnapSelectedTreelines::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus SnapSelectedTreelines::doIt( const MArgList& args ) +{ + //For each treeline in the selection list, call + + MSelectionList selectionList; + MGlobal::getActiveSelectionList( selectionList ); + + MItSelectionList itSel( selectionList ); + + while ( !itSel.isDone() ) + { + MObject obj; + itSel.getDependNode( obj ); + + Recurse( obj ); + + itSel.next(); + } + + return MStatus::kSuccess; +} + +//============================================================================= +// SnapSelectedTreelines::Recurse +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& obj ) +// +// Return: void +// +//============================================================================= +void SnapSelectedTreelines::Recurse( MObject& obj ) +{ + MStatus status; + + MFnTransform FnTransform( obj, &status ); + + if ( status ) + { + //This is a transform... + + MFnDagNode fnDagNode( obj ); + + unsigned int i; + for ( i = 0; i < fnDagNode.childCount(); ++i ) + { + Recurse( fnDagNode.child( i ) ); + } + } + else + { + MFnDependencyNode fnDepNode( obj ); + + if ( fnDepNode.typeId() == TETreeLine::TreelineShapeNode::id ) + { + TETreeLine::TreelineShapeNode::SnapTreeline( obj ); + } + + } +} + +//***************************************************************************** +// +// ConvertTreelineToGeometry +// +//***************************************************************************** + +//============================================================================= +// ConvertTreelineToGeometry::ConvertTreelineToGeometry +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: ConvertTreelineToGeometry +// +//============================================================================= +ConvertTreelineToGeometry::ConvertTreelineToGeometry() +{ +} + +//============================================================================= +// ConvertTreelineToGeometry::~ConvertTreelineToGeometry +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: ConvertTreelineToGeometry +// +//============================================================================= +ConvertTreelineToGeometry::~ConvertTreelineToGeometry() +{ +} + +//============================================================================= +// ConvertTreelineToGeometry::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus ConvertTreelineToGeometry::doIt( const MArgList& args ) +{ + //For each treeline in the world, call + + MSelectionList selectionList; + selectionList.clear(); + + MItDag itDag( MItDag::kDepthFirst ); + + while ( !itDag.isDone() ) + { + MDagPath dagPath; + itDag.getPath( dagPath ); + + selectionList.add( dagPath ); + + itDag.next(); + } + + if ( selectionList.length() > 0 ) + { + + MItSelectionList itSel( selectionList ); + + while ( !itSel.isDone() ) + { + MObject obj; + itSel.getDependNode( obj ); + + Recurse( obj ); + + itSel.next(); + } + } + + return MStatus::kSuccess; +} + +//============================================================================= +// ConvertTreelineToGeometry::Recurse +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& obj ) +// +// Return: void +// +//============================================================================= +void ConvertTreelineToGeometry::Recurse( MObject& obj ) +{ + MStatus status; + +/* + MFnTransform FnTransform( obj, &status ); + + if ( status ) + { + //This is a transform... + + MFnDagNode fnDagNode( obj ); + + unsigned int i; + for ( i = 0; i < fnDagNode.childCount(); ++i ) + { + Recurse( fnDagNode.child( i ) ); + } + } + else + { +*/ + MFnDependencyNode fnDepNode( obj ); + + if ( fnDepNode.typeId() == TETreeLine::TreelineShapeNode::id ) + { + TETreeLine::TreelineShapeNode::ConvertToGeometry( obj ); + } + +// } +} + +//***************************************************************************** +// +// SetDeleteTreeline +// +//***************************************************************************** + +//============================================================================= +// SetDeleteTreeline::SetDeleteTreeline +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: SetDeleteTreeline +// +//============================================================================= +SetDeleteTreeline::SetDeleteTreeline() +{ +} + +//============================================================================= +// SetDeleteTreeline::~SetDeleteTreeline +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: SetDeleteTreeline +// +//============================================================================= +SetDeleteTreeline::~SetDeleteTreeline() +{ +} + +//============================================================================= +// SetDeleteTreeline::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus SetDeleteTreeline::doIt( const MArgList& args ) +{ + assert( args.length() == 1 ); + + bool del; + args.get( 0, del ); + + TrackEditor::SetDeleteTreelines( del ); + + return MStatus::kSuccess; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/trackeditor/code/commands/treelinecommand.h b/tools/trackeditor/code/commands/treelinecommand.h new file mode 100644 index 0000000..1e556b6 --- /dev/null +++ b/tools/trackeditor/code/commands/treelinecommand.h @@ -0,0 +1,136 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: tetreelinecommand.h +// +// Description: Blahblahblah +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef TETREELINECOMMAND_H +#define TETREELINECOMMAND_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class SnapSelectedTreelines : public MPxCommand +{ +public: + SnapSelectedTreelines(); + virtual ~SnapSelectedTreelines(); + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; + +private: + + void Recurse( MObject& obj ); + + //Prevent wasteful constructor creation. + SnapSelectedTreelines( const SnapSelectedTreelines& tetreelinecommand ); + SnapSelectedTreelines& operator=( const SnapSelectedTreelines& tetreelinecommand ); +}; + +class ConvertTreelineToGeometry : public MPxCommand +{ +public: + ConvertTreelineToGeometry(); + ~ConvertTreelineToGeometry(); + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; + +private: + void Recurse( MObject& obj ); + + //Prevent wasteful constructor creation. + ConvertTreelineToGeometry( const ConvertTreelineToGeometry& tetreelinecommand ); + ConvertTreelineToGeometry& operator=( const ConvertTreelineToGeometry& tetreelinecommand ); +}; + +class SetDeleteTreeline : public MPxCommand +{ +public: + SetDeleteTreeline(); + ~SetDeleteTreeline(); + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; + +private: + + //Prevent wasteful constructor creation. + SetDeleteTreeline( const SetDeleteTreeline& tetreelinecommand ); + SetDeleteTreeline& operator=( const SetDeleteTreeline& tetreelinecommand ); +}; +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// SnapSelectedTreelines::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline void* SnapSelectedTreelines::creator() +{ + return new SnapSelectedTreelines(); +} + +//============================================================================= +// ConvertTreelineToGeometry::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline void* ConvertTreelineToGeometry::creator() +{ + return new ConvertTreelineToGeometry(); +} + +//============================================================================= +// SetDeleteTreeline::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline void* SetDeleteTreeline::creator() +{ + return new SetDeleteTreeline(); +} +#endif //TETREELINECOMMAND_H diff --git a/tools/trackeditor/code/constants/version.hpp b/tools/trackeditor/code/constants/version.hpp new file mode 100644 index 0000000..bf88478 --- /dev/null +++ b/tools/trackeditor/code/constants/version.hpp @@ -0,0 +1,16 @@ +/*=========================================================================== + + File:: version.hpp + + Copyright (c) %YEAR% Radical Entertainment, Inc. All rights reserved. + +===========================================================================*/ + +#ifndef _VERSION_HPP +#define _VERSION_HPP + +extern char* version; +extern char* versioninfo[]; + +#endif + diff --git a/tools/trackeditor/code/contexts/bvcontext.cpp b/tools/trackeditor/code/contexts/bvcontext.cpp new file mode 100644 index 0000000..1a4e0a0 --- /dev/null +++ b/tools/trackeditor/code/contexts/bvcontext.cpp @@ -0,0 +1,721 @@ +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +#include "bvcontext.h" +#include "utility/Mext.h" +#include "nodes/walllocator.h" +#include "nodes/fenceline.h" +#include "nodes/nu.h" +#include "main/trackeditor.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- +const char* BVContext::stringId = "BVContext"; +int BVContext::sLeftSide = WallLocatorNode::LEFT; +const MString BVContext::DEFAULT_GROUP_NAME = "FenceLine"; +MObject BVContext::sCurrentGroup; + + +const char* BVSplitCmd::stringId = "BVSplitSelected"; + +//============================================================================== +// BVContextCmd::BVContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: BVContextCmd +// +//============================================================================== +BVContextCmd::BVContextCmd() +{ +} + +//============================================================================== +// BVContextCmd::~BVContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: BVContextCmd +// +//============================================================================== +BVContextCmd::~BVContextCmd() +{ +} + +//----------------------------------------------------------------------------- +// c r e a t o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* BVContextCmd::creator() +{ + return new BVContextCmd(); +} + +//----------------------------------------------------------------------------- +// m a k e O b j +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPxContext* BVContextCmd::makeObj() +{ + return new BVContext(); +} + +//============================================================================== +// BVContext::BVContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: BVContext +// +//============================================================================== +BVContext::BVContext() : + mXCurrent( 0 ), + mYCurrent( 0 ) +{ + SetHelpString(); + + setTitleString( "Bounding Volume Path Tool" ); +} + +//============================================================================== +// BVContext::~BVContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: BVContext +// +//============================================================================== +BVContext::~BVContext() +{ +} + +//============================================================================== +// BVContext::abortAction +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void BVContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//----------------------------------------------------------------------------- +// c o m p l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void BVContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//----------------------------------------------------------------------------- +// d e l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void BVContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//----------------------------------------------------------------------------- +// d o D r a g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus BVContext::doDrag( MEvent& event ) +{ + + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( MOUSEDRAG ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o E n t e r R e g i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus BVContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o H o l d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus BVContext::doHold( MEvent& event ) +{ + MStatus status = MS::kSuccess; + return status; +} + +//----------------------------------------------------------------------------- +// d o P r e s s +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus BVContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o R e l e a s e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus BVContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + else if ( event.mouseButton() == MEvent::kMiddleMouse ) + { + //Toggle the leftness... + sLeftSide = sLeftSide == WallLocatorNode::LEFT ? WallLocatorNode::RIGHT : WallLocatorNode::LEFT; + + SetHelpString(); + } + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// t o o l O f f C l e a n u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void BVContext::toolOffCleanup() +{ + CloseLoop(); + mPoints.clear(); + sCurrentGroup = MObject::kNullObj; +} + +//----------------------------------------------------------------------------- +// t o o l O n S e t u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void BVContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); + + mPoints.clear(); + sCurrentGroup = MObject::kNullObj; +} + +//----------------------------------------------------------------------------- +// +// P R I V A T E M E M B E R S +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// p r o c e s s S t a t e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void BVContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + } + break; + + case BUTTONUP: + { + MObject newNode; + MObject nodeTransform; + + MExt::CreateNode( newNode, nodeTransform, MString( WallLocatorNode::stringId ) ); + + NODE_UTIL::DisableAttributes( newNode ); + + MExt::Attr::Set( sLeftSide, + newNode, + WallLocatorNode::LEFTRIGHT_NAME_LONG ); + + //Set the position + + MPoint vp( mXCurrent, mYCurrent, 0 ); + MPoint wp; + MExt::ViewToWorldAtY( &wp, vp, 0 ); + MExt::SetWorldPosition( wp, newNode ); + + AddPoint( newNode ); + } + break; + case DELETED: + { + DeleteLast(); + } + break; + case COMPLETED: + { + //Complete the loop and start a new one. + CloseLoop(); + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================== +// BVContext::AddPoint +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject obj ) +// +// Return: void +// +//============================================================================== +void BVContext::AddPoint( MObject obj ) +{ + MStatus status; + unsigned int size = mPoints.length(); + + if ( size ) + { + MObject lastNode; + + lastNode = mPoints[ size - 1 ]; + + if ( lastNode.isNull() ) + { + //Someone has been deleting nodes. + MExt::DisplayError( "Someone has deleted something..." ); + return; + } + + MExt::Connect( lastNode, WallLocatorNode::NEXTNODE_NAME_LONG, obj, WallLocatorNode::PREVNODE_NAME_LONG ); + } + else + { + //Starting a new group + MObject flT; + MString name( DEFAULT_GROUP_NAME ); + + MExt::CreateNode( sCurrentGroup, flT, MString( FenceLineNode::stringId ), &name ); + + //Parent this group to the main TrackEditor Node if it exists. + TrackEditor::AddChild( sCurrentGroup ); + } + + mPoints.append( obj ); + + //Add the point (wall) to the current fence + FenceLineNode::AddWall( sCurrentGroup, obj ); +} + +//============================================================================== +// BVContext::DeleteLast +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void BVContext::DeleteLast() +{ + unsigned int size = mPoints.length(); + + if ( size ) + { + MStatus status; + + MObject obj = mPoints[ size - 1 ]; + mPoints.remove( size - 1 ); + + MExt::DeleteNode( obj, true ); + } + + if ( mPoints.length() == 0 && !sCurrentGroup.isNull() ) + { + //we deleted the last one. + //Remove the group object. + MExt::DeleteNode( sCurrentGroup, true ); + } +} + +//============================================================================== +// BVContext::CloseLoop +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void BVContext::CloseLoop() +{ + unsigned int size = mPoints.length(); + + if ( size == 1 ) + { + MExt::DisplayWarning( "There was only one point in the BV loop. It will be deleted." ); + + DeleteLast(); + } + else if ( size == 2 ) + { + MExt::DisplayWarning( "There were only two points in the BV loop. They will be deleted." ); + + DeleteLast(); + DeleteLast(); + } + else if ( size > 2 ) + { + MObject lastNode, firstNode; + MStatus status; + + lastNode = mPoints[ size - 1 ]; + firstNode = mPoints[ 0 ]; + + MExt::Connect( lastNode, WallLocatorNode::NEXTNODE_NAME_LONG, firstNode, WallLocatorNode::PREVNODE_NAME_LONG ); + + //Clear the points list to start a new loop. + mPoints.clear(); + sCurrentGroup; + } +} + +//============================================================================== +// BVContext::SetHelpString +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void BVContext::SetHelpString() +{ + mHelp = "Click to place nodes in the path."; + + if ( sLeftSide ) + { + mHelp += "LEFT-SIDED"; + } + else + { + mHelp += "RIGHT-SIDED"; + } + + setHelpString( mHelp ); + +} + +//SPLIT COMMAND +//============================================================================== +// BVSplitCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* BVSplitCmd::creator() +{ + return new BVSplitCmd(); +} + +//============================================================================== +// BVSplitCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList &args ) +// +// Return: MStatus +// +//============================================================================== +MStatus BVSplitCmd::doIt( const MArgList &args ) +{ + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.isEmpty() ) + { + //Nothing to do. + return MS::kSuccess; + } + + //Get the number of objects in the list. + unsigned int numObjs = selectionList.length(); + + MObject obj; + MFnDependencyNode fnNode; + MObjectArray objArray; + + unsigned int i; + for ( i = 0; i < numObjs; ++i ) + { + selectionList.getDependNode( i, obj ); + fnNode.setObject( obj ); + + if ( fnNode.typeId() == WallLocatorNode::id ) + { + //This is a wall locator, add it to the array. + objArray.append( obj ); + } + else + { + //This could be a transform, let's test the child node. + MFnDagNode dagNode( obj ); + if( dagNode.childCount() ) + { + //Get the first child + MObject child = dagNode.child( 0 ); + + fnNode.setObject( child ); + if ( fnNode.typeId() == WallLocatorNode::id ) + { + //This is a wall locator, add it to the array. + objArray.append( child ); + } + } + } + } + + if ( objArray.length() <= 1 ) + { + //Nothing to do. + return MS::kSuccess; + } + + //For each object in the objArray that is connected to another, create a node in-between... + MStatus status; + MObject obj1, obj2; + MFnDependencyNode fnNode1, fnNode2; + MPlug nextPlug, prevPlug; + + unsigned int j; + for ( i = 0; i < objArray.length() - 1; ++i ) + { + for ( j = i + 1; j < objArray.length(); ++j ) + { + //Check if i and j are connected. + obj1 = objArray[i]; + obj2 = objArray[j]; + + fnNode1.setObject( obj1 ); + fnNode2.setObject( obj2 ); + + //Compare obj1.next to obj2.prev + nextPlug = fnNode1.findPlug( WallLocatorNode::NEXTNODE_NAME_LONG, &status ); + assert( status ); + prevPlug = fnNode2.findPlug( WallLocatorNode::PREVNODE_NAME_LONG, &status ); + assert( status ); + + if ( MExt::IsConnected( nextPlug, prevPlug ) ) + { + //Split and connect these two objects. + Split( obj1, obj2 ); + } + else + { + //Compare obj2.next to obj1.prev + nextPlug = fnNode2.findPlug( WallLocatorNode::NEXTNODE_NAME_LONG, &status ); + assert( status ); + prevPlug = fnNode1.findPlug( WallLocatorNode::PREVNODE_NAME_LONG, &status ); + assert( status ); + + if ( MExt::IsConnected( nextPlug, prevPlug ) ) + { + //Split and connect these two objects. + Split( obj2, obj1 ); + } + } + } + } + + return MS::kSuccess; +} + +//============================================================================== +// BVSplitCmd::Split +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& node1, MObject& node2 ) +// +// Return: void +// +//============================================================================== +void BVSplitCmd::Split( MObject& node1, MObject& node2 ) +{ + //Take node1 and node2, create a newNode between them and connect + /// node1.next -> newNode.prev and newNode.next -> node2.prev + + //Disconnect the nodes. + MExt::DisconnectAll( node1, WallLocatorNode::NEXTNODE_NAME_LONG ); + + MObject newNode; + MObject nodeTransform; + + MExt::CreateNode( newNode, nodeTransform, MString( WallLocatorNode::stringId ) ); + + NODE_UTIL::DisableAttributes( newNode ); + + //This will split based on one of the others. + int isLeft; + MExt::Attr::Get( &isLeft, node1, WallLocatorNode::LEFTRIGHT_NAME_LONG ); + + MExt::Attr::Set( !isLeft == WallLocatorNode::LEFT ? WallLocatorNode::RIGHT : WallLocatorNode::LEFT, + newNode, + WallLocatorNode::LEFTRIGHT_NAME_LONG ); + + MPoint newWP = MExt::GetWorldPositionBetween( node1, node2 ); + //Lock the y to 0; + newWP[1] = 0; + + MExt::SetWorldPosition( newWP, newNode ); + + //Connect the nodes in their new order. + MExt::Connect( node1, WallLocatorNode::NEXTNODE_NAME_LONG, newNode, WallLocatorNode::PREVNODE_NAME_LONG ); + MExt::Connect( newNode, WallLocatorNode::NEXTNODE_NAME_LONG, node2, WallLocatorNode::PREVNODE_NAME_LONG ); + + //Make sure the node is parented properly... + + MFnDagNode fnDagNode( node1 ); + MObject parentT = fnDagNode.parent( 0 ); + + fnDagNode.setObject( parentT ); + MObject groupT = fnDagNode.parent( 0 ); + + FenceLineNode::AddWall( groupT, newNode ); +} + diff --git a/tools/trackeditor/code/contexts/bvcontext.h b/tools/trackeditor/code/contexts/bvcontext.h new file mode 100644 index 0000000..e444cd5 --- /dev/null +++ b/tools/trackeditor/code/contexts/bvcontext.h @@ -0,0 +1,98 @@ +#include "precompiled/PCH.h" + +#ifndef BVCONTEXT +#define BVCONTEXT + +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//----------------------------------------------------------------------------- +// +// B o u n d i n g v o l u m e C o n t e x t +// +//----------------------------------------------------------------------------- +class BVContext : public MPxContext +{ + public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + + BVContext(); + virtual ~BVContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& ); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& ); + virtual MStatus doDrag( MEvent& ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + + static int sLeftSide; + static const MString DEFAULT_GROUP_NAME; + static MObject sCurrentGroup; + + private: + void ProcessState( Stimulus stimulus ); + void AddPoint( MObject obj ); + void DeleteLast(); + void CloseLoop(); + void SetHelpString(); + + MObjectArray mPoints; + MString mHelp; + + short mXCurrent, mYCurrent; +}; + +//----------------------------------------------------------------------------- +// +// B o u n d i n g v o l u m e C o n t e x t C m d +// +//----------------------------------------------------------------------------- +class BVContextCmd : public MPxContextCommand +{ + public: + BVContextCmd(); + virtual ~BVContextCmd(); + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +class BVSplitCmd : public MPxCommand +{ +public: + MStatus doIt( const MArgList& args ); + static void* creator(); + + static const char* stringId; + +private: + void Split( MObject& node1, MObject& node2 ); +}; + +#endif diff --git a/tools/trackeditor/code/contexts/intersectioncontext.cpp b/tools/trackeditor/code/contexts/intersectioncontext.cpp new file mode 100644 index 0000000..561d5bf --- /dev/null +++ b/tools/trackeditor/code/contexts/intersectioncontext.cpp @@ -0,0 +1,478 @@ +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <math.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +#include "intersectioncontext.h" +#include "nodes/intersection.h" +#include "utility/mext.h" +#include "main/trackeditor.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +const short OFFSET = 10; +const double SCALE_FACTOR = 0.002; + +const char* IntersectionContext::stringId = "IntersectionContext"; + +//============================================================================== +// IntersectionContextCmd::IntersectionContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: IntersectionContextCmd +// +//============================================================================== +IntersectionContextCmd::IntersectionContextCmd() +{ +} + +//============================================================================== +// IntersectionContextCmd::~IntersectionContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: IntersectionContextCmd +// +//============================================================================== +IntersectionContextCmd::~IntersectionContextCmd() +{ +} + +//----------------------------------------------------------------------------- +// c r e a t o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* IntersectionContextCmd::creator() +{ + return new IntersectionContextCmd(); +} + +//----------------------------------------------------------------------------- +// m a k e O b j +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPxContext* IntersectionContextCmd::makeObj() +{ + return new IntersectionContext(); +} + +//============================================================================== +// IntersectionContext::IntersectionContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: IntersectionContext +// +//============================================================================== +IntersectionContext::IntersectionContext() : + mXCurrent( 0 ), + mYCurrent( 0 ), + mIntersection( MObject::kNullObj ), + mIntersectionTransform( MObject::kNullObj ) +{ + SetHelpString(); + + setTitleString( "Intersection Overlay Tool" ); +} + +//============================================================================== +// IntersectionContext::~IntersectionContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: IntersectionContext +// +//============================================================================== +IntersectionContext::~IntersectionContext() +{ +} + +//============================================================================== +// IntersectionContext::abortAction +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void IntersectionContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//----------------------------------------------------------------------------- +// c o m p l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void IntersectionContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//----------------------------------------------------------------------------- +// d e l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void IntersectionContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//----------------------------------------------------------------------------- +// d o D r a g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus IntersectionContext::doDrag( MEvent& event ) +{ + + event.getPosition( mXDrag, mYDrag ); + ProcessState( MOUSEDRAG ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o E n t e r R e g i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus IntersectionContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o H o l d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus IntersectionContext::doHold( MEvent& event ) +{ + MStatus status = MS::kSuccess; + return status; +} + +//----------------------------------------------------------------------------- +// d o P r e s s +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus IntersectionContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o R e l e a s e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus IntersectionContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// t o o l O f f C l e a n u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void IntersectionContext::toolOffCleanup() +{ + if ( mIntersectionTransform != MObject::kNullObj ) + { + mIntersection = MObject::kNullObj; + mIntersectionTransform = MObject::kNullObj; + } +} + +//----------------------------------------------------------------------------- +// t o o l O n S e t u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void IntersectionContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); +} + +//----------------------------------------------------------------------------- +// +// P R I V A T E M E M B E R S +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// p r o c e s s S t a t e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void IntersectionContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + InitIntersection(); + } + break; + case MOUSEDRAG: + { + //Scale the intersection according to drag dist. + short diffX = mXCurrent - mXDrag; + short diffY = mYCurrent - mYDrag; + + double dist = 25.0 + sqrt( ( diffX*diffX + diffY*diffY ) ) * SCALE_FACTOR; + + double scaleFactor[3] = { dist, dist, dist }; + + MFnTransform fnTransform( mIntersectionTransform ); + + fnTransform.setScale( scaleFactor ); + } + break; + case BUTTONUP: + case COMPLETED: + { + } + break; + case ABORTED: + { + if ( mIntersectionTransform != MObject::kNullObj ) + { + mIntersection = MObject::kNullObj; + mIntersectionTransform = MObject::kNullObj; + } + } + break; + case DELETED: + { + if ( mIntersectionTransform != MObject::kNullObj ) + { + MGlobal::deleteNode( mIntersection ); + MGlobal::deleteNode( mIntersectionTransform ); + mIntersection = MObject::kNullObj; + mIntersectionTransform = MObject::kNullObj; + } + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================== +// IntersectionContext::SetHelpString +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void IntersectionContext::SetHelpString() +{ + mHelp = "Click and drag to create intersection."; + + setHelpString( mHelp ); +} + +//============================================================================== +// IntersectionContext::InitIntersection +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void IntersectionContext::InitIntersection() +{ + //Get the mesh below the clicked point and find it's y height. + short xStart, xEnd, yStart, yEnd; + + xStart = 0; + xEnd = M3dView::active3dView().portWidth(); + yStart = M3dView::active3dView().portHeight(); + yEnd = 0; + + MGlobal::selectFromScreen( xStart, + yStart, + xEnd, + yEnd, + MGlobal::kReplaceList ); + + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.length() > 0 ) + { + //Go through each selected object and see if the ray intersects it. + MItSelectionList selectIt( selectionList, MFn::kMesh ); + + MPoint nearClick, farClick; + M3dView activeView = M3dView::active3dView(); + activeView.viewToWorld( mXCurrent, mYCurrent, nearClick, farClick ); + MVector rayDir( MVector( farClick ) - MVector( nearClick ) ); + MPointArray intersectPoints; + MDagPath objDag; + + while ( !selectIt.isDone() ) + { + selectIt.getDagPath( objDag ); + + MFnMesh mesh( objDag ); + + mesh.intersect( nearClick, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + if ( intersectPoints.length() > 0 ) + { + MObject transform; + MExt::CreateNode( mIntersection, + mIntersectionTransform, + MString( IntersectionLocatorNode::stringId ) ); + + assert( !mIntersection.isNull() ); + + MExt::SetWorldPosition( intersectPoints[0], mIntersection ); + + MFnTransform fnTransform( mIntersectionTransform ); + + const double scale[3] = { 25.0, 25.0, 25.0 }; + fnTransform.setScale( scale ); + + + TrackEditor::AddChild( mIntersection ); + + break; + } + + selectIt.next(); + } + } + + MGlobal::clearSelectionList(); +} diff --git a/tools/trackeditor/code/contexts/intersectioncontext.h b/tools/trackeditor/code/contexts/intersectioncontext.h new file mode 100644 index 0000000..b54edd9 --- /dev/null +++ b/tools/trackeditor/code/contexts/intersectioncontext.h @@ -0,0 +1,82 @@ +#include "precompiled/PCH.h" + +#ifndef INTERSECTION_CONTEXT +#define INTERSECTION_CONTEXT + +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//----------------------------------------------------------------------------- +// +// I n t e r s e c t i o n C o n t e x t +// +//----------------------------------------------------------------------------- +class IntersectionContext : public MPxContext +{ + public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + + IntersectionContext(); + virtual ~IntersectionContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& ); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& ); + virtual MStatus doDrag( MEvent& ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + + private: + void ProcessState( Stimulus stimulus ); + void SetHelpString(); + void InitIntersection(); + + MString mHelp; + + short mXCurrent, mYCurrent; + short mXDrag, mYDrag; + MObject mIntersection; + MObject mIntersectionTransform; +}; + +//----------------------------------------------------------------------------- +// +// I n t e r s e c t i o n C o n t e x t C m d +// +//----------------------------------------------------------------------------- +class IntersectionContextCmd : public MPxContextCommand +{ + public: + IntersectionContextCmd(); + virtual ~IntersectionContextCmd(); + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +#endif diff --git a/tools/trackeditor/code/contexts/ppcontext.cpp b/tools/trackeditor/code/contexts/ppcontext.cpp new file mode 100644 index 0000000..0a2a84b --- /dev/null +++ b/tools/trackeditor/code/contexts/ppcontext.cpp @@ -0,0 +1,717 @@ +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +#include "ppcontext.h" +#include "utility/Mext.h" +#include "nodes/pedpath.h" +#include "nodes/nu.h" +#include "nodes/walllocator.h" +#include "main/trackeditor.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- +const char* PPContext::stringId = "PPContext"; +const MString PPContext::DEFAULT_GROUP_NAME = "PedPath"; +MObject PPContext::sCurrentGroup; + + +const char* PPSplitCmd::stringId = "PPSplitSelected"; + +//============================================================================== +// PPContextCmd::PPContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PPContextCmd +// +//============================================================================== +PPContextCmd::PPContextCmd() +{ +} + +//============================================================================== +// PPContextCmd::~PPContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PPContextCmd +// +//============================================================================== +PPContextCmd::~PPContextCmd() +{ +} + +//----------------------------------------------------------------------------- +// c r e a t o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* PPContextCmd::creator() +{ + return new PPContextCmd(); +} + +//----------------------------------------------------------------------------- +// m a k e O b j +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPxContext* PPContextCmd::makeObj() +{ + return new PPContext(); +} + +//============================================================================== +// PPContext::PPContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PPContext +// +//============================================================================== +PPContext::PPContext() : + mXCurrent( 0 ), + mYCurrent( 0 ) +{ + SetHelpString(); + + setTitleString( "Pedestrian Path Tool" ); +} + +//============================================================================== +// PPContext::~PPContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PPContext +// +//============================================================================== +PPContext::~PPContext() +{ +} + +//============================================================================== +// PPContext::abortAction +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void PPContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//----------------------------------------------------------------------------- +// c o m p l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void PPContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//----------------------------------------------------------------------------- +// d e l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void PPContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//----------------------------------------------------------------------------- +// d o D r a g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus PPContext::doDrag( MEvent& event ) +{ + + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( MOUSEDRAG ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o E n t e r R e g i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus PPContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o H o l d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus PPContext::doHold( MEvent& event ) +{ + MStatus status = MS::kSuccess; + return status; +} + +//----------------------------------------------------------------------------- +// d o P r e s s +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus PPContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o R e l e a s e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus PPContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// t o o l O f f C l e a n u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void PPContext::toolOffCleanup() +{ + CloseLoop(); + mPoints.clear(); + sCurrentGroup = MObject::kNullObj; +} + +//----------------------------------------------------------------------------- +// t o o l O n S e t u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void PPContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); + + mPoints.clear(); + sCurrentGroup = MObject::kNullObj; +} + +//----------------------------------------------------------------------------- +// +// P R I V A T E M E M B E R S +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// p r o c e s s S t a t e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void PPContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + } + break; + + case BUTTONUP: + { + MObject newNode; + MObject nodeTransform; + + MExt::CreateNode( newNode, nodeTransform, MString( WallLocatorNode::stringId ) ); + +// NODE_UTIL::DisableAttributes( newNode, false ); + MFnDagNode fnDagNode( newNode ); + + MObject parent = fnDagNode.parent( 0 ); + MFnDependencyNode fnParent( parent ); + MPlug spPlug = fnParent.findPlug( MString( "scale" ) ); + spPlug.setLocked( true ); + + MPlug rpPlug = fnParent.findPlug( MString( "rotate" ) ); + rpPlug.setLocked( true ); + + + MExt::Attr::Set( WallLocatorNode::NONE, + newNode, + WallLocatorNode::LEFTRIGHT_NAME_LONG ); + + //Set the position + MPoint intersectPoint; + if ( !MExt::MeshClickIntersect( mXCurrent, mYCurrent, intersectPoint ) ) + { + //Put it at 0. + MPoint vp( mXCurrent, mYCurrent, 0 ); + MExt::ViewToWorldAtY( &intersectPoint, vp, 0 ); //This is to y = 0 + } + +// intersectPoint = intersectPoint / TEConstants::Scale; + + MExt::SetWorldPosition( intersectPoint, newNode ); + + AddPoint( newNode ); + } + break; + case DELETED: + { + DeleteLast(); + } + break; + case COMPLETED: + { + //Complete the loop and start a new one. + CloseLoop(); + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================== +// PPContext::AddPoint +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject obj ) +// +// Return: void +// +//============================================================================== +void PPContext::AddPoint( MObject obj ) +{ + MStatus status; + unsigned int size = mPoints.length(); + + if ( size ) + { + MObject lastNode; + + lastNode = mPoints[ size - 1 ]; + + if ( lastNode.isNull() ) + { + //Someone has been deleting nodes. + MExt::DisplayError( "Someone has deleted something..." ); + return; + } + + MExt::Connect( lastNode, WallLocatorNode::NEXTNODE_NAME_LONG, obj, WallLocatorNode::PREVNODE_NAME_LONG ); + } + else + { + //Starting a new group + MObject flT; + MString name( DEFAULT_GROUP_NAME ); + + MExt::CreateNode( sCurrentGroup, flT, MString( PedPathNode::stringId ), &name ); + + //Parent this group to the main TrackEditor Node if it exists. + TrackEditor::AddChild( sCurrentGroup ); + } + + mPoints.append( obj ); + + //Add the point (wall) to the current fence + PedPathNode::AddWall( sCurrentGroup, obj ); +} + +//============================================================================== +// PPContext::DeleteLast +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void PPContext::DeleteLast() +{ + unsigned int size = mPoints.length(); + + if ( size ) + { + MStatus status; + + MObject obj = mPoints[ size - 1 ]; + mPoints.remove( size - 1 ); + + MExt::DeleteNode( obj, true ); + } + + if ( mPoints.length() == 0 && !sCurrentGroup.isNull() ) + { + //we deleted the last one. + //Remove the group object. + MExt::DeleteNode( sCurrentGroup, true ); + } +} + +//============================================================================== +// PPContext::CloseLoop +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void PPContext::CloseLoop() +{ + unsigned int size = mPoints.length(); + + if ( size == 1 ) + { + MExt::DisplayWarning( "There was only one point in the PP loop. It will be deleted." ); + + DeleteLast(); + } + else if ( size == 2 ) + { + MExt::DisplayWarning( "There were only two points in the PP loop. They will be deleted." ); + + DeleteLast(); + DeleteLast(); + } + else if ( size > 2 ) + { + MObject lastNode, firstNode; + MStatus status; + + lastNode = mPoints[ size - 1 ]; + firstNode = mPoints[ 0 ]; + + MExt::Connect( lastNode, WallLocatorNode::NEXTNODE_NAME_LONG, firstNode, WallLocatorNode::PREVNODE_NAME_LONG ); + + //Clear the points list to start a new loop. + mPoints.clear(); + sCurrentGroup; + } +} + +//============================================================================== +// PPContext::SetHelpString +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void PPContext::SetHelpString() +{ + mHelp = "Click to place nodes in the path."; + + setHelpString( mHelp ); + +} + +//SPLIT COMMAND +//============================================================================== +// PPSplitCmd::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* PPSplitCmd::creator() +{ + return new PPSplitCmd(); +} + +//============================================================================== +// PPSplitCmd::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList &args ) +// +// Return: MStatus +// +//============================================================================== +MStatus PPSplitCmd::doIt( const MArgList &args ) +{ + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.isEmpty() ) + { + //Nothing to do. + return MS::kSuccess; + } + + //Get the number of objects in the list. + unsigned int numObjs = selectionList.length(); + + MObject obj; + MFnDependencyNode fnNode; + MObjectArray objArray; + + unsigned int i; + for ( i = 0; i < numObjs; ++i ) + { + selectionList.getDependNode( i, obj ); + fnNode.setObject( obj ); + + if ( fnNode.typeId() == WallLocatorNode::id ) + { + //This is a wall locator, add it to the array. + objArray.append( obj ); + } + else + { + //This could be a transform, let's test the child node. + MFnDagNode dagNode( obj ); + if( dagNode.childCount() ) + { + //Get the first child + MObject child = dagNode.child( 0 ); + + fnNode.setObject( child ); + if ( fnNode.typeId() == WallLocatorNode::id ) + { + //This is a wall locator, add it to the array. + objArray.append( child ); + } + } + } + } + + if ( objArray.length() <= 1 ) + { + //Nothing to do. + return MS::kSuccess; + } + + //For each object in the objArray that is connected to another, create a node in-between... + MStatus status; + MObject obj1, obj2; + MFnDependencyNode fnNode1, fnNode2; + MPlug nextPlug, prevPlug; + + unsigned int j; + for ( i = 0; i < objArray.length() - 1; ++i ) + { + for ( j = i + 1; j < objArray.length(); ++j ) + { + //Check if i and j are connected. + obj1 = objArray[i]; + obj2 = objArray[j]; + + fnNode1.setObject( obj1 ); + fnNode2.setObject( obj2 ); + + //Compare obj1.next to obj2.prev + nextPlug = fnNode1.findPlug( WallLocatorNode::NEXTNODE_NAME_LONG, &status ); + assert( status ); + prevPlug = fnNode2.findPlug( WallLocatorNode::PREVNODE_NAME_LONG, &status ); + assert( status ); + + if ( MExt::IsConnected( nextPlug, prevPlug ) ) + { + //Split and connect these two objects. + Split( obj1, obj2 ); + } + else + { + //Compare obj2.next to obj1.prev + nextPlug = fnNode2.findPlug( WallLocatorNode::NEXTNODE_NAME_LONG, &status ); + assert( status ); + prevPlug = fnNode1.findPlug( WallLocatorNode::PREVNODE_NAME_LONG, &status ); + assert( status ); + + if ( MExt::IsConnected( nextPlug, prevPlug ) ) + { + //Split and connect these two objects. + Split( obj2, obj1 ); + } + } + } + } + + return MS::kSuccess; +} + +//============================================================================== +// PPSplitCmd::Split +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& node1, MObject& node2 ) +// +// Return: void +// +//============================================================================== +void PPSplitCmd::Split( MObject& node1, MObject& node2 ) +{ + //Take node1 and node2, create a newNode between them and connect + /// node1.next -> newNode.prev and newNode.next -> node2.prev + + //Disconnect the nodes. + MExt::DisconnectAll( node1, WallLocatorNode::NEXTNODE_NAME_LONG ); + + MObject newNode; + MObject nodeTransform; + + MExt::CreateNode( newNode, nodeTransform, MString( WallLocatorNode::stringId ) ); + + ///NODE_UTIL::DisableAttributes( newNode ); + + //This will split based on one of the others. + MExt::Attr::Set( WallLocatorNode::NONE, + newNode, + WallLocatorNode::LEFTRIGHT_NAME_LONG ); + + MPoint newWP = MExt::GetWorldPositionBetween( node1, node2 ); + //Lock the y to 0; + newWP[1] = 0; + + MExt::SetWorldPosition( newWP, newNode ); + + //Connect the nodes in their new order. + MExt::Connect( node1, WallLocatorNode::NEXTNODE_NAME_LONG, newNode, WallLocatorNode::PREVNODE_NAME_LONG ); + MExt::Connect( newNode, WallLocatorNode::NEXTNODE_NAME_LONG, node2, WallLocatorNode::PREVNODE_NAME_LONG ); + + //Make sure the node is parented properly... + + MFnDagNode fnDagNode( node1 ); + MObject parentT = fnDagNode.parent( 0 ); + + fnDagNode.setObject( parentT ); + MObject groupT = fnDagNode.parent( 0 ); + + PedPathNode::AddWall( groupT, newNode ); +} + diff --git a/tools/trackeditor/code/contexts/ppcontext.h b/tools/trackeditor/code/contexts/ppcontext.h new file mode 100644 index 0000000..04e212d --- /dev/null +++ b/tools/trackeditor/code/contexts/ppcontext.h @@ -0,0 +1,97 @@ +#include "precompiled/PCH.h" + +#ifndef PPCONTEXT +#define PPCONTEXT + +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//----------------------------------------------------------------------------- +// +// B o u n d i n g v o l u m e C o n t e x t +// +//----------------------------------------------------------------------------- +class PPContext : public MPxContext +{ + public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + + PPContext(); + virtual ~PPContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& ); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& ); + virtual MStatus doDrag( MEvent& ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + + static const MString DEFAULT_GROUP_NAME; + static MObject sCurrentGroup; + + private: + void ProcessState( Stimulus stimulus ); + void AddPoint( MObject obj ); + void DeleteLast(); + void CloseLoop(); + void SetHelpString(); + + MObjectArray mPoints; + MString mHelp; + + short mXCurrent, mYCurrent; +}; + +//----------------------------------------------------------------------------- +// +// B o u n d i n g v o l u m e C o n t e x t C m d +// +//----------------------------------------------------------------------------- +class PPContextCmd : public MPxContextCommand +{ + public: + PPContextCmd(); + virtual ~PPContextCmd(); + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +class PPSplitCmd : public MPxCommand +{ +public: + MStatus doIt( const MArgList& args ); + static void* creator(); + + static const char* stringId; + +private: + void Split( MObject& node1, MObject& node2 ); +}; + +#endif diff --git a/tools/trackeditor/code/contexts/treelinecontext.cpp b/tools/trackeditor/code/contexts/treelinecontext.cpp new file mode 100644 index 0000000..5c5ba56 --- /dev/null +++ b/tools/trackeditor/code/contexts/treelinecontext.cpp @@ -0,0 +1,402 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: TreeLineContext.cpp +// +// Description: Implement TreeLineContext +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Project Includes +//======================================== +#include "contexts/TreeLineContext.h" +#include "utility/mext.h" +#include "main/constants.h" +#include "main/trackeditor.h" +#include "nodes/treelineshapenode.h" + + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +const char* TreeLineContext::stringId = "TreeLineContext"; +MObject TreeLineContext::mCurrentTreeLine; +bool TreeLineContext::mWorking = false; + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// TreeLineContext::TreeLineContext +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +TreeLineContext::TreeLineContext() : + mXCurrent( 0 ), + mYCurrent( 0 ) +{ + SetHelpString(); + + setTitleString( "Ye Tree Line Tool" ); + +} + +//============================================================================== +// TreeLineContext::~TreeLineContext +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +TreeLineContext::~TreeLineContext() +{ +} + +//============================================================================= +// TreeLineContext::toolOnSetup +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& ) +// +// Return: void +// +//============================================================================= +void TreeLineContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); + + mPoints.clear(); + mWorking = false; + mCurrentTreeLine = MObject::kNullObj; +} + +//============================================================================= +// TreeLineContext::toolOffCleanup +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::toolOffCleanup() +{ + mPoints.clear(); + mCurrentTreeLine = MObject::kNullObj; +} + +//============================================================================= +// TreeLineContext::doPress +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& event ) +// +// Return: MStatus +// +//============================================================================= +MStatus TreeLineContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MStatus::kSuccess; +} + +//============================================================================= +// TreeLineContext::doDrag +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& event ) +// +// Return: MStatus +// +//============================================================================= +MStatus TreeLineContext::doDrag( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( MOUSEDRAG ); + return MStatus::kSuccess; +} + +//============================================================================= +// TreeLineContext::doRelease +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& event ) +// +// Return: MStatus +// +//============================================================================= +MStatus TreeLineContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + + return MStatus::kSuccess; +} + +//============================================================================= +// TreeLineContext::doHold +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& event ) +// +// Return: MStatus +// +//============================================================================= +MStatus TreeLineContext::doHold( MEvent& event ) +{ + return MStatus::kSuccess; +} + +//============================================================================= +// TreeLineContext::doEnterRegion +//============================================================================= +// Description: Comment +// +// Parameters: ( MEvent& event ) +// +// Return: MStatus +// +//============================================================================= +MStatus TreeLineContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MStatus::kSuccess; +} + +//============================================================================= +// TreeLineContext::deleteAction +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//============================================================================= +// TreeLineContext::completeAction +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//============================================================================= +// TreeLineContext::abortAction +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** + +//============================================================================= +// TreeLineContext::ProcessState +//============================================================================= +// Description: Comment +// +// Parameters: ( Stimulus stimulus ) +// +// Return: void +// +//============================================================================= +void TreeLineContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + } + break; + + case BUTTONUP: + { + if ( !mWorking ) + { + //Let's create our working Treeline! + MObject transform; + MString name( TETreeLine::TreelineShapeNode::stringId ); + MExt::CreateNode( &mCurrentTreeLine, + &transform, + MString( TETreeLine::TreelineShapeNode::stringId ), + &name ); + mWorking = true; + + MFnTransform fnTransform( transform ); + fnTransform.findPlug( MString("translate") ).setLocked( true ); + fnTransform.findPlug( MString("rotate") ).setLocked( true ); + fnTransform.findPlug( MString("scale") ).setLocked( true ); + + TrackEditor::AddChild( mCurrentTreeLine ); + } + + //Set the position + MPoint intersectPoint; + if ( !MExt::MeshClickIntersect( mXCurrent, mYCurrent, intersectPoint ) ) + { + //Put it at 0. + MPoint vp( mXCurrent, mYCurrent, 0 ); + MExt::ViewToWorldAtY( &intersectPoint, vp, 0 ); //This is to y = 0 + } + + intersectPoint = intersectPoint / TEConstants::Scale; + + MStatus status; + MFnDependencyNode fnDepNode( mCurrentTreeLine ); + + MPlug verticesPlug = fnDepNode.findPlug( TETreeLine::TreelineShapeNode::mControlPoints, &status ); + assert( status ); + + unsigned int elementCount = verticesPlug.numElements(); + MPlug vertex = verticesPlug.elementByLogicalIndex( elementCount, &status ); + assert( status ); + + MPlug x = vertex.child( TETreeLine::TreelineShapeNode::mControlValueX, &status ); + assert( status ); + + x.setValue( intersectPoint.x * TEConstants::Scale ); + + MPlug y = vertex.child( TETreeLine::TreelineShapeNode::mControlValueY, &status ); + assert( status ); + y.setValue( intersectPoint.y * TEConstants::Scale ); + + MPlug z = vertex.child( TETreeLine::TreelineShapeNode::mControlValueZ, &status ); + assert( status ); + z.setValue( intersectPoint.z * TEConstants::Scale ); + + MGlobal::select( mCurrentTreeLine, MGlobal::kReplaceList ); + } + break; + case DELETED: + { + DeleteLast(); + } + break; + case ABORTED: + case COMPLETED: + { + //Start new treeline + mWorking = false; + mCurrentTreeLine = MObject::kNullObj; + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================= +// TreeLineContext::AddPoint +//============================================================================= +// Description: Comment +// +// Parameters: ( MPoint& point ) +// +// Return: void +// +//============================================================================= +void TreeLineContext::AddPoint( MPoint& point ) +{ + mPoints.append( point ); +} + +//============================================================================= +// TreeLineContext::DeleteLast +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::DeleteLast() +{ + unsigned int size = mPoints.length(); + + if ( size ) + { + MStatus status; + + mPoints.remove( size - 1 ); + } +} + +//============================================================================= +// TreeLineContext::SetHelpString +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TreeLineContext::SetHelpString() +{ + mHelp = "Click to place vertices in the line."; + + setHelpString( mHelp ); +} diff --git a/tools/trackeditor/code/contexts/treelinecontext.h b/tools/trackeditor/code/contexts/treelinecontext.h new file mode 100644 index 0000000..a9833b7 --- /dev/null +++ b/tools/trackeditor/code/contexts/treelinecontext.h @@ -0,0 +1,139 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: treelinecontext.h +// +// Description: Blahblahblah +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= +#include "precompiled/PCH.h" + +#ifndef TREELINECONTEXT_H +#define TREELINECONTEXT_H + +//======================================== +// Nested Includes +//======================================== + + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class TreeLineContext : public MPxContext +{ +public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + TreeLineContext(); + virtual ~TreeLineContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& event); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& event); + virtual MStatus doDrag( MEvent& event ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + +private: + void ProcessState( Stimulus stimulus ); + void AddPoint( MPoint& point ); + void DeleteLast(); + void SetHelpString(); + + MPointArray mPoints; + MString mHelp; + + static MObject mCurrentTreeLine; + static bool mWorking; + + short mXCurrent, mYCurrent; + +private: + + //Prevent wasteful constructor creation. + TreeLineContext( const TreeLineContext& treelinecontext ); + TreeLineContext& operator=( const TreeLineContext& treelinecontext ); +}; + +//****************************************************************************** +// +// TreeLineContextCmd +// +//****************************************************************************** + +class TreeLineContextCmd : public MPxContextCommand +{ + public: + TreeLineContextCmd() {}; + virtual ~TreeLineContextCmd() {}; + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// TreeLineContextCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline void* TreeLineContextCmd::creator() +{ + return new TreeLineContextCmd(); +} + +//============================================================================= +// TreeLineContextCmd::makeObj +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MPxContext +// +//============================================================================= +inline MPxContext* TreeLineContextCmd::makeObj() +{ + return new TreeLineContext(); +} + + +#endif //TREELINECONTEXT_H + diff --git a/tools/trackeditor/code/main/constants.h b/tools/trackeditor/code/main/constants.h new file mode 100644 index 0000000..b9bcc25 --- /dev/null +++ b/tools/trackeditor/code/main/constants.h @@ -0,0 +1,21 @@ +#ifndef TE_CONSTANTS +#define TE_CONSTANTS + +namespace TEConstants +{ + const unsigned int TypeIDPrefix = 0x00040200; + const float Scale = 100.0f; + + namespace NodeIDs + { + const unsigned int WallLocator = 0xc0; + const unsigned int FenceLine = 0xc1; + const unsigned int TileDisplay = 0xc2; + const unsigned int Intersection = 0xc3; + const unsigned int Road = 0xc4; + const unsigned int TreeLine = 0xc5; + const unsigned int PedPath = 0xc6; + } +} + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/main/pluginMain.cpp b/tools/trackeditor/code/main/pluginMain.cpp new file mode 100644 index 0000000..190ea4d --- /dev/null +++ b/tools/trackeditor/code/main/pluginMain.cpp @@ -0,0 +1,164 @@ +// +// Copyright (C) 2002 Radical Entertainment +// +// File: pluginMain.cpp +// +// Author: Maya SDK Wizard +// +#include "precompiled/PCH.h" + +#include <maya/MFnPlugin.h> + +//This is a warning provided by the STL... It seems that toollib gets whacky when there +//is other templates made... Sigh... +#pragma warning(disable:4786) + +#include "pluginmain.h" +#include "trackeditor.h" + +#include "utility/mayahandles.h" +#include "utility/mext.h" + +//Nodes +#include "nodes/walllocator.h" +#include "nodes/fenceline.h" +#include "nodes/tiledisplay.h" +#include "nodes/intersection.h" +#include "nodes/road.h" +#include "nodes/treelineshapenode.h" +#include "nodes/pedpath.h" + +//Contexts +#include "contexts/bvcontext.h" +#include "contexts/intersectioncontext.h" +#include "contexts/treelinecontext.h" +#include "contexts/ppcontext.h" + +//Commands +#include "commands/export.h" +#include "commands/trackeditorcommands.h" +#include "commands/intersectioncommands.h" +#include "commands/treelinecommand.h" + + +TrackEditor* gTE = 0; + +MStatus initializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is loaded into Maya. It +// registers all of the services that this plug-in provides with +// Maya. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + + + MayaHandles::SetHInstance( (void*)(MhInstPlugin) ); + + MFnPlugin plugin( obj, "Radical Entertainment", "4.0.1", "Any"); + + // Add plug-in feature registration here + // + + //Register Nodes + REGISTER_LOCATOR( plugin, WallLocatorNode ); + REGISTER_LOCATOR( plugin, FenceLineNode ); + REGISTER_LOCATOR( plugin, TileDisplayNode ); + REGISTER_LOCATOR( plugin, IntersectionLocatorNode ); + REGISTER_LOCATOR( plugin, RoadNode ); + REGISTER_LOCATOR( plugin, PedPathNode ); + + REGISTER_SHAPE( plugin, TETreeLine::TreelineShapeNode ); + + //Register Contexts + REGISTER_CONTEXT( plugin, BVContext ); + REGISTER_CONTEXT( plugin, IntersectionContext ); + REGISTER_CONTEXT( plugin, TreeLineContext ); + REGISTER_CONTEXT( plugin, PPContext ); + + //Register Commands + REGISTER_COMMAND( plugin, PPSplitCmd ); + REGISTER_COMMAND( plugin, BVSplitCmd ); + REGISTER_COMMAND( plugin, ExportCommand ); + REGISTER_COMMAND( plugin, TEStateChangeCommand ); + REGISTER_COMMAND( plugin, TEGetSelectedVertexPosition ); + REGISTER_COMMAND( plugin, TEGetSelectedVertexIndex ); + REGISTER_COMMAND( plugin, CreateRoadCmd ); + REGISTER_COMMAND( plugin, AddIntersectionToRoadCmd ); + REGISTER_COMMAND( plugin, ShowRoadCmd ); + REGISTER_COMMAND( plugin, DestroyRoadCmd ); + REGISTER_COMMAND( plugin, SnapSelectedTreelines ); + REGISTER_COMMAND( plugin, ConvertTreelineToGeometry ); + REGISTER_COMMAND( plugin, SetDeleteTreeline ); + + + //Create the TrackEditor. + gTE = new TrackEditor(); + + //Run any startup scripts. + MGlobal::sourceFile( MString( "te_main.mel" ) ); + + return status; +} + +MStatus uninitializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is unloaded from Maya. It +// deregisters all of the services that it was providing. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + MFnPlugin plugin( obj ); + + // Add plug-in feature deregistration here + // + + //Run any cleanup scripts. + MGlobal::sourceFile( MString( "te_cleanup.mel" ) ); + + if ( gTE ) + { + delete gTE; + } + + //Unregister Commands + DEREGISTER_COMMAND( plugin, SetDeleteTreeline ); + DEREGISTER_COMMAND( plugin, ConvertTreelineToGeometry ); + DEREGISTER_COMMAND( plugin, SnapSelectedTreelines ); + DEREGISTER_COMMAND( plugin, DestroyRoadCmd ); + DEREGISTER_COMMAND( plugin, ShowRoadCmd ); + DEREGISTER_COMMAND( plugin, AddIntersectionToRoadCmd ); + DEREGISTER_COMMAND( plugin, CreateRoadCmd ); + DEREGISTER_COMMAND( plugin, TEGetSelectedVertexIndex ); + DEREGISTER_COMMAND( plugin, TEGetSelectedVertexPosition ); + DEREGISTER_COMMAND( plugin, TEStateChangeCommand ); + DEREGISTER_COMMAND( plugin, ExportCommand ); + DEREGISTER_COMMAND( plugin, BVSplitCmd ); + + //Unregister Contexts + DEREGISTER_CONTEXT( plugin, PPContext ); + DEREGISTER_CONTEXT( plugin, TreeLineContext ); + DEREGISTER_CONTEXT( plugin, IntersectionContext ); + DEREGISTER_CONTEXT( plugin, BVContext ); + DEREGISTER_CONTEXT( plugin, PPContext ); + + //Unregister Nodes + DEREGISTER_NODE( plugin, PedPathNode ); + DEREGISTER_NODE( plugin, TETreeLine::TreelineShapeNode ); + DEREGISTER_NODE( plugin, RoadNode ); + DEREGISTER_NODE( plugin, IntersectionLocatorNode ); + DEREGISTER_NODE( plugin, TileDisplayNode ); + DEREGISTER_NODE( plugin, FenceLineNode ); + DEREGISTER_NODE( plugin, WallLocatorNode ); + + return status; +} + diff --git a/tools/trackeditor/code/main/pluginMain.h b/tools/trackeditor/code/main/pluginMain.h new file mode 100644 index 0000000..7ed6ee6 --- /dev/null +++ b/tools/trackeditor/code/main/pluginMain.h @@ -0,0 +1,47 @@ +#include "precompiled/PCH.h" + +//---------------------------------------- +// MACROS +//---------------------------------------- + +#define REGISTER_COMMAND( p, c ) if ( ! ( ( p ).registerCommand( c##::stringId, \ + c##::creator ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_CONTEXT( p, c ) if ( ! ( ( p ).registerContextCommand( c##::stringId, \ + c##Cmd::creator ) \ + ) \ + ) return MS::kFailure + + +#define REGISTER_LOCATOR( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize, \ + MPxNode::kLocatorNode ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_NODE( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_SHAPE( p, n ) if ( ! ( ( p ).registerShape( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize, \ + n##UI::creator ) \ + ) \ + ) return MS::kFailure + +#define DEREGISTER_COMMAND( p, c ) ( p ).deregisterCommand( c##::stringId ) + +#define DEREGISTER_CONTEXT( p, c ) ( p ).deregisterContextCommand( c##::stringId ) + + +#define DEREGISTER_NODE( p, n ) ( p ).deregisterNode( n##::id ) + diff --git a/tools/trackeditor/code/main/shapeconstants.h b/tools/trackeditor/code/main/shapeconstants.h new file mode 100644 index 0000000..c6c777d --- /dev/null +++ b/tools/trackeditor/code/main/shapeconstants.h @@ -0,0 +1,34 @@ +#ifndef SHAPE_CONSTANTS_H +#define SHAPE_CONSTANTS_H + +#define LEAD_COLOR 1 // green +#define ACTIVE_COLOR 1 // white +#define ACTIVE_AFFECTED_COLOR 1 // purple +#define DORMANT_COLOR 1 // blue +#define HILITE_COLOR 1 // pale blue + +#define P3D_BILLBOARD_QUAD_ID 0x040260 +#define P3D_BILLBOARD_QUAD_GROUP_ID 0x040261 +#define MAYA_LAMBERT_ID 1380729165 +#define MAYA_PHONG_ID 1380993103 +#define MAYA_LAYERED_SHADER_ID 1280922195 + +namespace TETreeLine +{ + +const float MIN_DISPLAY_SIZE=0.001f; + +enum { + WIREFRAME, + WIREFRAME_SHADED, + SMOOTH_SHADED, + FLAT_SHADED, + VERTICES, + LAST_TOKEN +}; + +}; //namespace TETreeLine + + +#endif //SHAPE_CONSTANTS_H + diff --git a/tools/trackeditor/code/main/trackeditor.cpp b/tools/trackeditor/code/main/trackeditor.cpp new file mode 100644 index 0000000..0b0ccc2 --- /dev/null +++ b/tools/trackeditor/code/main/trackeditor.cpp @@ -0,0 +1,350 @@ +#include "precompiled/PCH.h" + +#include "trackeditor.h" +#include "utility/mext.h" + +#include "nodes/tiledisplay.h" +#include "nodes/fenceline.h" +#include "nodes/intersection.h" +#include "nodes/walllocator.h" +#include "nodes/road.h" +#include "nodes/treelineshapenode.h" +#include "nodes/pedpath.h" + +const char* TrackEditor::Name = "TrackEditorNode"; +TrackEditor::EditMode TrackEditor::sEditMode = TrackEditor::OFF; +unsigned int TrackEditor::sNodeAddedbackID = 0; +unsigned int TrackEditor::sWindowClosedCallbackID = 0; +bool TrackEditor::sDeleteTreelines = true; + + +//============================================================================== +// TrackEditor::TrackEditor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TrackEditor +// +//============================================================================== +TrackEditor::TrackEditor() +{ +// sNodeAddedbackID = MDGMessage::addNodeAddedCallback ( NodeAddedCB, +// MString( "surfaceShape" ) ); +}; + +//============================================================================== +// TrackEditor::~TrackEditor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TrackEditor +// +//============================================================================== +TrackEditor::~TrackEditor() +{ + if ( sNodeAddedbackID ) + { + MDGMessage::removeCallback( sNodeAddedbackID ); + } + + if ( sWindowClosedCallbackID ) + { + MUiMessage::removeCallback( sWindowClosedCallbackID ); + } + + RemoveTileDisplayNode(); +}; + +//============================================================================== +// TrackEditor::Exists +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================== +bool TrackEditor::Exists() +{ + MDagPath pathToTrackEditor; + return MExt::FindDagNodeByName( &pathToTrackEditor, MString( TrackEditor::Name ) ); +} + +//============================================================================== +// TrackEditor::AddChild +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& obj ) +// +// Return: MStatus +// +//============================================================================== +MStatus TrackEditor::AddChild( MObject& obj ) +{ + //Make sure this exists. + CreateTrackEditorNode(); + + MDagPath pathToTrackEditor; + + bool good = false; + + if ( MExt::FindDagNodeByName( &pathToTrackEditor, MString( TrackEditor::Name ) ) ) + { + good = true; + } + else + { + MGlobal::sourceFile( MString( "te_setup.mel" ) ); + + if ( MExt::FindDagNodeByName( &pathToTrackEditor, MString( TrackEditor::Name ) ) ) + { + good = true; + } + } + + if ( good ) + { + MFnDagNode fnDagNodeTE; + + //Which type? + MFnDagNode fnDagNodeObj( obj ); + + if ( fnDagNodeObj.typeId() == FenceLineNode::id ) + { + //This is a fenceline, parent to the "Fences" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString("Fences"), pathToTrackEditor.node() ) ) + { + fnDagNodeTE.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted Terrain Edit nodes!!" ); + } + } + if ( fnDagNodeObj.typeId() == PedPathNode::id ) + { + //This is a ped path, parent to the "PedPaths" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString("PedPaths"), pathToTrackEditor.node() ) ) + { + fnDagNodeTE.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted Terrain Edit nodes!!" ); + } + } + else if ( fnDagNodeObj.typeId() == IntersectionLocatorNode::id ) + { + //This is a fenceline, parent to the "Intersections" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString("Intersections"), pathToTrackEditor.node() ) ) + { + fnDagNodeTE.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted Terrain Edit nodes!!" ); + } + } + else if ( fnDagNodeObj.typeId() == RoadNode::id ) + { + //This is a fenceline, parent to the "Roads" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString("Roads"), pathToTrackEditor.node() ) ) + { + fnDagNodeTE.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted Terrain Edit nodes!!" ); + } + } + else if ( fnDagNodeObj.typeId() == TETreeLine::TreelineShapeNode::id ) + { + //This is a tree line, add to the "Treelines" node + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString("Treelines"), pathToTrackEditor.node() ) ) + { + fnDagNodeTE.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted Terrain Edit nodes!!" ); + } + } + else + { + fnDagNodeTE.setObject( pathToTrackEditor.node() ); + } + + MObject objT = fnDagNodeObj.parent( 0 ); + + return fnDagNodeTE.addChild( objT ); + } + + return MS::kFailure; +} + +//Edit mode stuff. +//============================================================================== +// TrackEditor::GetEditMode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TrackEditor +// +//============================================================================== +TrackEditor::EditMode TrackEditor::GetEditMode() +{ + //Test the track editor radio buttons for their state. + + return sEditMode; +}; + +//============================================================================== +// TrackEditor::SetEditMode +//============================================================================== +// Description: Comment +// +// Parameters: ( TrackEditor::EditMode mode ) +// +// Return: void +// +//============================================================================== +void TrackEditor::SetEditMode( TrackEditor::EditMode mode ) +{ + //Setup whatever needs setting up for the given mode. + switch( mode ) + { + case OFF: + { + RemoveTileDisplayNode(); + + MGlobal::executeCommand( MString("teCloseEditorWindow()") ); + } + break; + case EDIT: + { + //Make sure this exists; + CreateTileDisplayNode(); + + MGlobal::executeCommand( MString("teOpenEditorWindow()") ); + + //We should register a callback for when the window is closed. + sWindowClosedCallbackID = MUiMessage::addUiDeletedCallback( MString( "TE_TileEditor" ), WindowClosedCB ); + } + break; + case DISPLAY: + { + //Make sure this exists; + CreateTileDisplayNode(); + + MGlobal::executeCommand( MString("teCloseEditorWindow()") ); + } + break; + default: + { + break; + } + } + + sEditMode = mode; +} + +//============================================================================== +// TrackEditor::NodeAddedCB +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& node, void* data ) +// +// Return: void +// +//============================================================================== +void TrackEditor::NodeAddedCB( MObject& node, void* data ) +{ +// assert( false ); +} + +//============================================================================== +// TrackEditor::WindowClosedCB +//============================================================================== +// Description: Comment +// +// Parameters: ( void* data ) +// +// Return: void +// +//============================================================================== +void TrackEditor::WindowClosedCB( void* data ) +{ + SetEditMode( OFF ); + + MUiMessage::removeCallback( sWindowClosedCallbackID ); +} + +//============================================================================== +// TrackEditor::CreateTrackEditorNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TrackEditor::CreateTrackEditorNode() +{ + MGlobal::executeCommand( "te_Create_TrackEditorNode()" ); +} + +//============================================================================== +// TrackEditor::CreateTileDisplayNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TrackEditor::CreateTileDisplayNode() +{ + if ( !MExt::FindDagNodeByName( NULL, MString( TileDisplayNode::stringId ) ) ) + { + MExt::CreateNode( 0, 0, MString( TileDisplayNode::stringId ) ); + } +} + +//============================================================================== +// TrackEditor::RemoveTileDisplayNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TrackEditor::RemoveTileDisplayNode() +{ + MDagPath dagPath; + + if ( MExt::FindDagNodeByName( &dagPath, MString( TileDisplayNode::stringId ) ) ) + { + MFnDagNode fnDagNode( dagPath ); + + MExt::DeleteNode( fnDagNode.object(), true ); + } +} + diff --git a/tools/trackeditor/code/main/trackeditor.h b/tools/trackeditor/code/main/trackeditor.h new file mode 100644 index 0000000..d48cba1 --- /dev/null +++ b/tools/trackeditor/code/main/trackeditor.h @@ -0,0 +1,85 @@ +#include "precompiled/PCH.h" + +#ifndef TRACK_EDITOR +#define TRACK_EDITOR + +//This node exists as the top node of all the other TrackEditor types. +//See te_setup.mel for more details of how this is a node. +//There should only ever be one of these in the Hypergraph. + +//This is the place where options will be stored also. + +class TrackEditor +{ +public: + TrackEditor(); + ~TrackEditor(); + + static const char* Name; + + static bool Exists(); + static MStatus AddChild( MObject& obj ); + + //These are the Track Editing functions and state. + enum EditMode + { + OFF, + EDIT, + DISPLAY + }; + + static EditMode GetEditMode(); + + static void SetDeleteTreelines( bool del ); + static bool GetDeleteTreelines(); + +protected: + + friend class TEStateChangeCommand; + static EditMode sEditMode; + static void SetEditMode( EditMode mode ); + + static bool sDeleteTreelines; + +private: + static unsigned int sNodeAddedbackID; + static unsigned int sWindowClosedCallbackID; + + static void NodeAddedCB( MObject& node, void* data ); + static void WindowClosedCB( void* data ); + static void CreateTrackEditorNode(); + static void CreateTileDisplayNode(); + static void RemoveTileDisplayNode(); +}; + +//============================================================================= +// TrackEditor::SetDeleteTreelines +//============================================================================= +// Description: Comment +// +// Parameters: ( bool del ) +// +// Return: void +// +//============================================================================= +inline void TrackEditor::SetDeleteTreelines( bool del ) +{ + sDeleteTreelines = del; +} + +//============================================================================= +// TrackEditor::GetDeleteTreelines +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +inline bool TrackEditor::GetDeleteTreelines() +{ + return sDeleteTreelines; +} + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/NU.h b/tools/trackeditor/code/nodes/NU.h new file mode 100644 index 0000000..d43db8f --- /dev/null +++ b/tools/trackeditor/code/nodes/NU.h @@ -0,0 +1,34 @@ +#include "precompiled/PCH.h" + +#ifndef NODE_UTIL_H +#define NODE_UTIL_H + +namespace NODE_UTIL +{ + inline void DisableAttributes( MObject& node, bool justY = true ) + { + MFnDagNode fnDagNode( node ); + + MObject parent = fnDagNode.parent( 0 ); + MFnDependencyNode fnParent( parent ); + + if ( justY ) + { + MPlug ptyPlug = fnParent.findPlug( MString( "translateY" ) ); + ptyPlug.setLocked( true ); + } + else + { + MPlug ptPlug = fnParent.findPlug( MString( "translate" ) ); + ptPlug.setLocked( true ); + } + + MPlug spPlug = fnParent.findPlug( MString( "scale" ) ); + spPlug.setLocked( true ); + + MPlug rpPlug = fnParent.findPlug( MString( "rotate" ) ); + rpPlug.setLocked( true ); + } +} + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/fenceline.cpp b/tools/trackeditor/code/nodes/fenceline.cpp new file mode 100644 index 0000000..87c8966 --- /dev/null +++ b/tools/trackeditor/code/nodes/fenceline.cpp @@ -0,0 +1,201 @@ +#include "fenceline.h" +#include "walllocator.h" +#include "utility/mext.h" + +#include <toollib.hpp> + +MTypeId FenceLineNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::FenceLine ); +const char* FenceLineNode::stringId = "FenceLine"; + +//============================================================================== +// FenceLineNode::FenceLineNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: FenceLineNode +// +//============================================================================== +FenceLineNode::FenceLineNode() {} + +//============================================================================== +// FenceLineNode::~FenceLineNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: FenceLineNode +// +//============================================================================== +FenceLineNode::~FenceLineNode() {} + +//============================================================================== +// FenceLineNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* FenceLineNode::creator() +{ + return new FenceLineNode(); +} + +//============================================================================== +// FenceLineNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus FenceLineNode::initialize() +{ + return MS::kSuccess; +} + +//============================================================================== +// FenceLineNode::postConstructor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void FenceLineNode::postConstructor() +{ + //No moving the fenceline. + MPlug lPlug( thisMObject(), localPosition ); + lPlug.setLocked( true ); + + MPlug wPlug( thisMObject(), worldPosition ); + wPlug.setLocked( true ); +} + +//This is how you export one of these. +//============================================================================== +// FenceLineNode::Export +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& fenceNode, tlHistory& history ) +// +// Return: tlDataChunk +// +//============================================================================== +tlDataChunk* FenceLineNode::Export( MObject& fenceNode, tlHistory& history ) +{ + //This fenceline assumes that there are fences below it. + MFnDagNode fnNode( fenceNode ); + + if ( fnNode.typeId() == FenceLineNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlFenceLineChunk* fenceLine = new tlFenceLineChunk; + + //Go through all it's children and add them to the chunk incrementing the + //count. + + unsigned int childCount = 0; + MItDag dagIt( MItDag::kDepthFirst, MFn::kLocator ); + + MFnDagNode fnDag( fenceNode ); + MObject fenceT = fnDag.parent( 0 ); + + dagIt.reset( fenceT ); + + while ( !dagIt.isDone() ) + { + MFnDependencyNode fnNode( dagIt.item() ); + MTypeId id = fnNode.typeId(); + + if ( id == WallLocatorNode::id ) + { + //Export a wall locator; + tlDataChunk* newChunk = WallLocatorNode::Export( dagIt.item(), history ); + + //Append this to the fence line + fenceLine->AppendSubChunk( newChunk ); + + ++childCount; + } + + dagIt.next(); + } + + if ( childCount ) + { + fenceLine->SetNumWalls( childCount ); + } + else + { + delete fenceLine; + return NULL; + } + + return fenceLine; + } + + assert( false ); + return NULL; +} + +//============================================================================== +// FenceLineNode::AddWall +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& fenceLine, MObject& wall ) +// +// Return: void +// +//============================================================================== +void FenceLineNode::AddWall( MObject& fenceLine, MObject& wall ) +{ + //Test to make sure the fenceLine passed in is an obj, not a transform. + MFnDagNode fnDag( fenceLine ); + if ( fnDag.typeId() == FenceLineNode::id ) + { + MExt::AddChild( fenceLine, wall ); + } + else + { + if ( fenceLine.apiType() == MFn::kTransform ) + { + //We need to find the FenceLine node that is the child of this transform. + unsigned int childCount = fnDag.childCount(); + + unsigned int i; + + MObject child; + MFnDagNode fnDagChild; + + for ( i = 0; i < childCount; ++i ) + { + child = fnDag.child( i ); + + fnDagChild.setObject( child ); + + if ( fnDagChild.typeId() == FenceLineNode::id ) + { + //This is the child. + MExt::AddChild( child, wall ); + return; + } + } + + MExt::DisplayError( "Tried to parent something strange to fenceLine" ); + assert(false); + } + } +} + diff --git a/tools/trackeditor/code/nodes/fenceline.h b/tools/trackeditor/code/nodes/fenceline.h new file mode 100644 index 0000000..d174f13 --- /dev/null +++ b/tools/trackeditor/code/nodes/fenceline.h @@ -0,0 +1,30 @@ +#include "precompiled/PCH.h" + + +#ifndef FENCELINE +#define FENCELINE + +#include "main/constants.h" + +class tlDataChunk; + +class FenceLineNode : public MPxLocatorNode +{ +public: + FenceLineNode(); + ~FenceLineNode(); + + static void* creator(); + static MStatus initialize(); + virtual void postConstructor(); + + static void AddWall( MObject& fenceLine, MObject& wall ); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& fenceNode, tlHistory& history ); + + static MTypeId id; + static const char* stringId; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/intersection.cpp b/tools/trackeditor/code/nodes/intersection.cpp new file mode 100644 index 0000000..f3dce53 --- /dev/null +++ b/tools/trackeditor/code/nodes/intersection.cpp @@ -0,0 +1,213 @@ +#include "precompiled/PCH.h" + +#include "intersection.h" +#include "main/constants.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "utility/transformmatrix.h" +#include <toollib.hpp> + + +MTypeId IntersectionLocatorNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::Intersection ); +const char* IntersectionLocatorNode::stringId = "IntersectionLocatorNode"; + +//Attribute +const char* IntersectionLocatorNode::TYPE_NAME_LONG = "IntersectionType"; +const char* IntersectionLocatorNode::TYPE_NAME_SHORT = "it"; +MObject IntersectionLocatorNode::mType; + +const char* IntersectionLocatorNode::ROAD_LONG = "Roads"; +const char* IntersectionLocatorNode::ROAD_SHORT = "R"; +MObject IntersectionLocatorNode::mRoads; + + +const int IntersectionLocatorNode::ACTIVE_COLOUR = 13; +const int IntersectionLocatorNode::INACTIVE_COLOUR = 22; +const float IntersectionLocatorNode::SCALE = 1.0f * TEConstants::Scale; + +IntersectionLocatorNode::IntersectionLocatorNode() {}; +IntersectionLocatorNode::~IntersectionLocatorNode() {}; + +//============================================================================== +// IntersectionLocatorNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* IntersectionLocatorNode::creator() +{ + return new IntersectionLocatorNode(); +} + +//============================================================================== +// IntersectionLocatorNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus IntersectionLocatorNode::initialize() +{ + MStatus status; + MFnTypedAttribute fnTyped; + MFnMessageAttribute fnMessage; + + mType = fnTyped.create( TYPE_NAME_LONG, TYPE_NAME_SHORT, MFnData::kString, MObject::kNullObj, &status ); + RETURN_STATUS_ON_FAILURE( status ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mType ) ); + + mRoads = fnMessage.create( ROAD_LONG, ROAD_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnMessage.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mRoads ) ); + + + return MS::kSuccess; +} + +//============================================================================== +// IntersectionLocatorNode::postConstructor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void IntersectionLocatorNode::postConstructor() +{ +} + + +//============================================================================== +// IntersectionLocatorNode::draw +//============================================================================== +// Description: Comment +// +// Parameters: draw( M3dView & view, +// const MDagPath & path, +// M3dView::DisplayStyle style, +// M3dView::DisplayStatus status ) +// +// Return: void +// +//============================================================================== +void IntersectionLocatorNode::draw( M3dView & view, + const MDagPath & path, + M3dView::DisplayStyle style, + M3dView::DisplayStatus status ) +{ + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + if ( status == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawI( TEConstants::Scale ); + GLExt::drawSphere( SCALE ); + + glPopAttrib(); + view.endGL(); +} + +//============================================================================== +// IntersectionLocatorNode::Export +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& intersectionLocatorNode, tlHistory& history ) +// +// Return: tlDataChunk +// +//============================================================================== +tlDataChunk* IntersectionLocatorNode::Export( MObject& intersectionLocatorNode, + tlHistory& history ) +{ + MFnDagNode fnNode( intersectionLocatorNode ); + + if ( fnNode.typeId() == IntersectionLocatorNode::id ) + { + tlIntersectionChunk* intersectionChunk = new tlIntersectionChunk; + + intersectionChunk->SetName( fnNode.name().asChar() ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, intersectionLocatorNode ); + + tlPoint point; + point[0] = thisPosition[0] / TEConstants::Scale; + point[1] = thisPosition[1] / TEConstants::Scale; + point[2] = -thisPosition[2] / TEConstants::Scale; //Maya vs. P3D... + + intersectionChunk->SetCentre( rmt::Vector( point ) ); + + //GetScale... + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + double scaleX; + fnTransform.findPlug( MString( "sx" ) ).getValue( scaleX ); + + intersectionChunk->SetRadius( (float)scaleX ); + + MPlug typePlug = fnNode.findPlug( mType ); + MString type; + typePlug.getValue( type ); + + if ( MString("NoStop") == type ) + { + intersectionChunk->SetType( 0 ); + } + else if ( MString("NWay") == type ) + { + intersectionChunk->SetType( 1 ); + } + else if ( MString("FourWay") == type ) + { + intersectionChunk->SetType( 2 ); + } + else if ( MString("NoStopN") == type ) + { + intersectionChunk->SetType( 3 ); + } + else //if ( MString("NWay") == type ) + { + intersectionChunk->SetType( 4 ); + } + + + return intersectionChunk; + } + + assert( false ); + return NULL; +}
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/intersection.h b/tools/trackeditor/code/nodes/intersection.h new file mode 100644 index 0000000..fade595 --- /dev/null +++ b/tools/trackeditor/code/nodes/intersection.h @@ -0,0 +1,48 @@ +#include "precompiled/PCH.h" + +#ifndef INTERSECTION_LOCATOR +#define INTERSECTION_LOCATOR + + +#include "main/constants.h" + +class tlDataChunk; + +class IntersectionLocatorNode : public MPxLocatorNode +{ +public: + IntersectionLocatorNode(); + ~IntersectionLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& intersectionLocatorNode, tlHistory& history ); + + static const char* TYPE_NAME_LONG; + static const char* TYPE_NAME_SHORT; + static MObject mType; + + static const char* ROAD_LONG; + static const char* ROAD_SHORT; + static MObject mRoads; //This is an out message to all the roads this intersection connects. + + static MTypeId id; + static const char* stringId; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/pedpath.cpp b/tools/trackeditor/code/nodes/pedpath.cpp new file mode 100644 index 0000000..682f004 --- /dev/null +++ b/tools/trackeditor/code/nodes/pedpath.cpp @@ -0,0 +1,271 @@ +#include "pedpath.h" +#include "walllocator.h" +#include "utility/mext.h" + +#include <toollib.hpp> + +MTypeId PedPathNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::PedPath ); +const char* PedPathNode::stringId = "PedPath"; + +//============================================================================== +// PedPathNode::PedPathNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PedPathNode +// +//============================================================================== +PedPathNode::PedPathNode() {} + +//============================================================================== +// PedPathNode::~PedPathNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: PedPathNode +// +//============================================================================== +PedPathNode::~PedPathNode() {} + +//============================================================================== +// PedPathNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* PedPathNode::creator() +{ + return new PedPathNode(); +} + +//============================================================================== +// PedPathNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus PedPathNode::initialize() +{ + return MS::kSuccess; +} + +//============================================================================== +// PedPathNode::postConstructor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void PedPathNode::postConstructor() +{ + //No moving the pedpath. + MPlug lPlug( thisMObject(), localPosition ); + lPlug.setLocked( true ); + + MPlug wPlug( thisMObject(), worldPosition ); + wPlug.setLocked( true ); +} + +//This is how you export one of these. +//============================================================================== +// PedPathNode::Export +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& pedNode, tlHistory& history ) +// +// Return: tlDataChunk +// +//============================================================================== +tlDataChunk* PedPathNode::Export( MObject& pedNode, tlHistory& history ) +{ + //This fenceline assumes that there are fences below it. + MFnDagNode fnNode( pedNode ); + + if ( fnNode.typeId() == PedPathNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlPedpathChunk* pedPath = new tlPedpathChunk; + + //Go through all it's children and add them to the chunk incrementing the + //count. + + unsigned int childCount = 0; + MItDag dagIt( MItDag::kDepthFirst, MFn::kLocator ); + + MFnDagNode fnDag( pedNode ); + MObject fenceT = fnDag.parent( 0 ); + + dagIt.reset( fenceT ); + + tlDataChunk tempChunk; + + while ( !dagIt.isDone() ) + { + MFnDependencyNode fnNode( dagIt.item() ); + MTypeId id = fnNode.typeId(); + + if ( id == WallLocatorNode::id ) + { + //Export a wall locator; + tlWallChunk* newChunk = reinterpret_cast<tlWallChunk*>(WallLocatorNode::Export( dagIt.item(), history )); + + //Append this to the fence line + tempChunk.AppendSubChunk( newChunk ); + + ++childCount; + } + + dagIt.next(); + } + + if ( childCount ) + { + tlPoint* points = new tlPoint[childCount + 1]; + + unsigned int i; +// for ( i = 0; i < tempChunk.SubChunkCount(); i++ ) +// { +// points[i] = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( i ))->GetStart(); +// +// if ( i == tempChunk.SubChunkCount() - 1 ) +// { +// points[childCount] = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( i ))->GetEnd(); +// } +// } + + //Okay, we need to order the points... If there was a split, the points will + //be badly ordered. + points[0] = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( 0 ))->GetStart(); //First point is always good. + + //This is the testing point for the loop below. + tlPoint testPoint = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( 0 ))->GetEnd(); + tempChunk.RemoveSubChunk( 0 ); + + unsigned int remainingChunks = childCount - 1; + unsigned int foundCount = 1; + + + while ( foundCount < childCount ) + { + bool found = false; + unsigned int chunkIndex = 0; + for ( i = 0; i < remainingChunks; ++i ) + { + if ( !found && reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( i ))->GetStart() == testPoint ) + { + points[foundCount] = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( i ))->GetStart(); + found = true; + foundCount++; + + //heheh + if ( foundCount == childCount ) + { + points[foundCount] = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( i ))->GetEnd(); + foundCount++; + } + + chunkIndex = i; + } + } + + if ( found ) + { + testPoint = reinterpret_cast<tlWallChunk*>(tempChunk.GetSubChunk( chunkIndex ))->GetEnd(); + + tempChunk.RemoveSubChunk( chunkIndex ); + remainingChunks--; + } + else + { + MExt::DisplayError("WHOA! Big error, get Cary!!!! Looks like ped paths are screwy.."); + break; + } + } + + + + pedPath->SetPoints( points, childCount + 1 ); + pedPath->SetNumPoints( childCount + 1 ); + + delete[] points; + points = NULL; + } + else + { + delete pedPath; + return NULL; + } + + return pedPath; + } + + assert( false ); + return NULL; +} + +//============================================================================== +// PedPathNode::AddWall +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& pedPath, MObject& wall ) +// +// Return: void +// +//============================================================================== +void PedPathNode::AddWall( MObject& pedPath, MObject& wall ) +{ + //Test to make sure the fenceLine passed in is an obj, not a transform. + MFnDagNode fnDag( pedPath ); + if ( fnDag.typeId() == PedPathNode::id ) + { + MExt::AddChild( pedPath, wall ); + } + else + { + if ( pedPath.apiType() == MFn::kTransform ) + { + //We need to find the FenceLine node that is the child of this transform. + unsigned int childCount = fnDag.childCount(); + + unsigned int i; + + MObject child; + MFnDagNode fnDagChild; + + for ( i = 0; i < childCount; ++i ) + { + child = fnDag.child( i ); + + fnDagChild.setObject( child ); + + if ( fnDagChild.typeId() == PedPathNode::id ) + { + //This is the child. + MExt::AddChild( child, wall ); + return; + } + } + + MExt::DisplayError( "Tried to parent something strange to pedPath" ); + assert(false); + } + } +} + diff --git a/tools/trackeditor/code/nodes/pedpath.h b/tools/trackeditor/code/nodes/pedpath.h new file mode 100644 index 0000000..be8bf48 --- /dev/null +++ b/tools/trackeditor/code/nodes/pedpath.h @@ -0,0 +1,30 @@ +#include "precompiled/PCH.h" + + +#ifndef PED_PATH +#define PED_PATH + +#include "main/constants.h" + +class tlDataChunk; + +class PedPathNode : public MPxLocatorNode +{ +public: + PedPathNode(); + ~PedPathNode(); + + static void* creator(); + static MStatus initialize(); + virtual void postConstructor(); + + static void AddWall( MObject& fenceLine, MObject& wall ); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& fenceNode, tlHistory& history ); + + static MTypeId id; + static const char* stringId; +}; + +#endif //PED_PATH
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/road.cpp b/tools/trackeditor/code/nodes/road.cpp new file mode 100644 index 0000000..c414d84 --- /dev/null +++ b/tools/trackeditor/code/nodes/road.cpp @@ -0,0 +1,409 @@ +#include "road.h" +#include "utility/mext.h" +#include "utility/transformmatrix.h" +#include <toollib.hpp> + +const tlPoint MVectorTotlPoint( const MVector& vector ) +{ + tlPoint point; + point[0] = vector[0]; + point[1] = vector[1]; + point[2] = vector[2]; + + return point; +} + +MTypeId RoadNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::Road ); +const char* RoadNode::stringId = "RoadNode"; + +const char* RoadNode::ROAD_SEG_NAME_SHORT = "RoadSegments"; +const char* RoadNode::ROAD_SEG_NAME_LONG = "rs"; +MObject RoadNode::mRoadSegments; + +const char* RoadNode::INTERSECTION_START_SHORT = "is"; +const char* RoadNode::INTERSECTION_START_LONG = "IntersectionStart"; +MObject RoadNode::mIntersectionStart; + +const char* RoadNode::INTERSECTION_END_SHORT = "ie"; +const char* RoadNode::INTERSECTION_END_LONG = "IntersectionEnd"; +MObject RoadNode::mIntersectionEnd; + +const char* RoadNode::DENSITY_SHORT = "den"; +const char* RoadNode::DENSITY_LONG = "density"; +MObject RoadNode::mDensity; + +const char* RoadNode::SPEED_SHORT = "spd"; +const char* RoadNode::SPEED_LONG = "speed"; +MObject RoadNode::mSpeed; + +const char* RoadNode::DIFF_SHORT = "diff"; +const char* RoadNode::DIFF_LONG = "difficulty"; +MObject RoadNode::mDiff; + +const char* RoadNode::SHORTCUT_SHORT = "shct"; +const char* RoadNode::SHORTCUT_LONG = "shortCut"; +MObject RoadNode::mShortcut; + + + +//============================================================================== +// RoadNode::RoadNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: RoadNode +// +//============================================================================== +RoadNode::RoadNode() {} + +//============================================================================== +// RoadNode::~RoadNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: RoadNode +// +//============================================================================== +RoadNode::~RoadNode() {} + +//============================================================================== +// RoadNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* RoadNode::creator() +{ + return new RoadNode(); +} + +//============================================================================== +// RoadNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus RoadNode::initialize() +{ + MStatus status; + MFnMessageAttribute fnMessage; + + mRoadSegments = fnMessage.create( ROAD_SEG_NAME_LONG, ROAD_SEG_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnMessage.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mRoadSegments ) ); + + mIntersectionStart = fnMessage.create( INTERSECTION_START_LONG, INTERSECTION_START_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mIntersectionStart ) ); + + mIntersectionEnd = fnMessage.create( INTERSECTION_END_LONG, INTERSECTION_END_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mIntersectionEnd ) ); + + MFnNumericAttribute fnNumeric; + mDensity = fnNumeric.create( DENSITY_LONG, DENSITY_SHORT, MFnNumericData::kInt, 5, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mDensity ) ); + + mSpeed = fnNumeric.create( SPEED_LONG, SPEED_SHORT, MFnNumericData::kInt, 50, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mSpeed ) ); + + mShortcut = fnNumeric.create( SHORTCUT_LONG, SHORTCUT_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mShortcut ) ); + + mDiff = fnNumeric.create( DIFF_LONG, DIFF_SHORT, MFnNumericData::kInt, 0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( fnNumeric.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mDiff ) ); + + + return MS::kSuccess; +} + +//============================================================================== +// RoadNode::postConstructor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void RoadNode::postConstructor() +{ + //No moving the road. + MPlug lPlug( thisMObject(), localPosition ); + lPlug.setLocked( true ); + + MPlug wPlug( thisMObject(), worldPosition ); + wPlug.setLocked( true ); +} + +//This is how you export one of these. +//============================================================================= +// RoadNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& roadNode, tlHistory& history, tlDataChunk* outChunk ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* RoadNode::Export( MObject& roadNode, tlHistory& history, tlDataChunk* outChunk ) //I think this is hackish. +{ + //This fenceline assumes that there are fences below it. + MFnDagNode fnNode( roadNode ); + + if ( fnNode.typeId() == RoadNode::id ) + { + MFnDependencyNode fnTempNode; + + tlRoadChunk* roadChunk = new tlRoadChunk; + + roadChunk->SetName( fnNode.name().asChar() ); + roadChunk->SetType( 0 ); + + //Get the intersections. + + //START + MPlug intersectionPlug = fnNode.findPlug( mIntersectionStart ); + MPlugArray source, dest; + MExt::ResolveConnections( &source, &dest, intersectionPlug, AS_SOURCE ); + + if ( dest.length() == 0 ) + { + MExt::DisplayError( "ERROR: Road %s has no start intersection!", fnNode.name().asChar() ); + delete roadChunk; + return NULL; + } + + fnTempNode.setObject( dest[0].node() ); + roadChunk->SetStartIntersection( fnTempNode.name().asChar() ); + + //END + intersectionPlug = fnNode.findPlug( mIntersectionEnd ); + MExt::ResolveConnections( &source, &dest, intersectionPlug, AS_SOURCE ); + + if ( dest.length() == 0 ) + { + MExt::DisplayError( "ERROR: Road %s has no end intersection!", fnNode.name().asChar() ); + delete roadChunk; + return NULL; + } + + fnTempNode.setObject( dest[0].node() ); + roadChunk->SetEndIntersection( fnTempNode.name().asChar() ); + + int density; + fnNode.findPlug( mDensity ).getValue( density ); + roadChunk->SetDensity( density ); + + int speed; + fnNode.findPlug( mSpeed ).getValue( speed ); + if ( speed > 255 || speed < 0 ) + { + speed = 255; //No need to mask, but what the hell. + } + + int diff; + fnNode.findPlug( mDiff ).getValue( diff ); + if ( diff > 255 || diff < 0 ) + { + diff = 255; + } + + bool sc; + fnNode.findPlug( mShortcut ).getValue( sc ); + + + //This works differently now. + //8 bits - speed + //8 bits - difficulty level + //1 bit - id Short cut + //15 bits - saved for later + const int SPEED_MASK = 0x000000FF; + const int DIFFIC_MASK = 0x0000FF00; + const int SC_MASK = 0x00010000; + + roadChunk->SetSpeed( speed | ( diff << 8 ) | ( sc ? SC_MASK : 0 ) ); + + //New set all the road segment chunks. + MPlug roadSegPlug = fnNode.findPlug( mRoadSegments ); + MExt::ResolveConnections( &source, &dest, roadSegPlug, AS_DEST ); + + MDagPath dagPath; + MPlug tempPlug; + tlRoadSegmentChunk* roadSegChunk = NULL; + tlRoadSegmentDataChunk* roadSegDataChunk = NULL; + unsigned int i; + for ( i = 0; i < source.length(); ++i ) + { + //Create new tlRoadSegmentChunks + roadSegChunk = new tlRoadSegmentChunk; + roadSegDataChunk = new tlRoadSegmentDataChunk; + + fnTempNode.setObject( source[ i ].node() ); + MExt::FindDagNodeByName( &dagPath, fnTempNode.name() ); + MFnMesh fnMesh( dagPath ); + + roadSegChunk->SetName( fnMesh.name().asChar() ); + roadSegChunk->SetRoadSegmentData( fnMesh.name().asChar() ); + roadSegDataChunk->SetName( fnMesh.name().asChar() ); + + tempPlug = fnMesh.findPlug( MString( "teType" ) ); + int type; + tempPlug.getValue( type ); + roadSegDataChunk->SetType( type < 0 ? 0 : type ); + + tempPlug = fnMesh.findPlug( MString( "teLanes" ) ); + int lanes; + tempPlug.getValue( lanes ); + roadSegDataChunk->SetNumLanes( lanes ); + + tempPlug = fnMesh.findPlug( MString( "teShoulder" ) ); + bool shoulder; + tempPlug.getValue( shoulder ); + roadSegDataChunk->SetHasShoulder( shoulder ? 1 : 0 ); + + MPointArray points; + fnMesh.getPoints( points, MSpace::kWorld ); + + //ORIGIN + tempPlug = fnMesh.findPlug( MString( "teOrigin" ) ); + int origin; + tempPlug.getValue( origin ); + assert( origin >= 0 ); + MPoint orig; + orig[ 0 ] = points[origin][0] / TEConstants::Scale; + orig[ 1 ] = points[origin][1] / TEConstants::Scale; + orig[ 2 ] = -points[origin][2] / TEConstants::Scale; + + //DIRECTION + tempPlug = fnMesh.findPlug( MString( "teRoad" ) ); + int direction; + tempPlug.getValue( direction ); + assert( direction >= 0 ); + MPoint dir; + dir[ 0 ] = points[direction][0] / TEConstants::Scale; + dir[ 1 ] = points[direction][1] / TEConstants::Scale; + dir[ 2 ] = -points[direction][2] / TEConstants::Scale; + + MVector vDir = dir - orig; + roadSegDataChunk->SetDirection( MVectorTotlPoint( vDir ) ); + + //TOP + tempPlug = fnMesh.findPlug( MString( "teTop" ) ); + int top; + tempPlug.getValue( top ); + assert( top >= 0 ); + MPoint topPoint; + topPoint[ 0 ] = points[top][0] / TEConstants::Scale; + topPoint[ 1 ] = points[top][1] / TEConstants::Scale; + topPoint[ 2 ] = -points[top][2] / TEConstants::Scale; + + MVector vTop = topPoint - orig; + roadSegDataChunk->SetTop( MVectorTotlPoint( vTop ) ); + + //BOTTOM + tempPlug = fnMesh.findPlug( MString( "teBottom" ) ); + int bottom; + tempPlug.getValue( bottom ); + assert( bottom >= 0 ); + MPoint bot; + bot[ 0 ] = points[bottom][0] / TEConstants::Scale; + bot[ 1 ] = points[bottom][1] / TEConstants::Scale; + bot[ 2 ] = -points[bottom][2] / TEConstants::Scale; + + MVector vBottom = bot - orig; + roadSegDataChunk->SetBottom( MVectorTotlPoint( vBottom ) ); + + + //Lets to the SCALE and ROTATION of the segment. + MPointArray worldPoints; + fnMesh.getPoints( worldPoints, MSpace::kWorld ); + + //WORLD ORIGIN + MPoint worldOrig; + worldOrig[ 0 ] = worldPoints[origin][0] / TEConstants::Scale; + worldOrig[ 1 ] = worldPoints[origin][1] / TEConstants::Scale; + worldOrig[ 2 ] = -worldPoints[origin][2] / TEConstants::Scale; + + //Get the parent transform matrix for the mesh. + MObject meshTransformObj = fnMesh.parent( 0 ); + MFnTransform fnTransform( meshTransformObj ); + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= TEConstants::Scale; + hmatrix.element[3][1] /= TEConstants::Scale; + hmatrix.element[3][2] /= TEConstants::Scale; + + if ( hmatrix.element[3][0] == 0.0f && + hmatrix.element[3][1] == 0.0f && + hmatrix.element[3][2] == 0.0f ) + { + //This could be a frozen + MExt::DisplayWarning( "%s could have it's transforms frozen! NOT GOOD! Forced to assume object was built at origin.", fnMesh.name().asChar() ); + + hmatrix.element[3][0] = worldOrig.x; + hmatrix.element[3][1] = worldOrig.y; + hmatrix.element[3][2] = worldOrig.z; + } + + tlMatrix smatrix; + tm.GetScaleMatrixLHS( smatrix ); + + //MATRICIES + roadSegChunk->SetHierarchyMatrix( hmatrix ); + roadSegChunk->SetScaleMatrix( smatrix ); + + //DONE + roadChunk->AppendSubChunk( roadSegChunk ); + + outChunk->AppendSubChunk( roadSegDataChunk ); + } + + return roadChunk; + } + + assert( false ); + return NULL; +} + diff --git a/tools/trackeditor/code/nodes/road.h b/tools/trackeditor/code/nodes/road.h new file mode 100644 index 0000000..a601433 --- /dev/null +++ b/tools/trackeditor/code/nodes/road.h @@ -0,0 +1,56 @@ +#include "precompiled/PCH.h" + + +#ifndef ROAD_H +#define ROAD_H + +#include "main/constants.h" + +class tlDataChunk; + +class RoadNode : public MPxLocatorNode +{ +public: + RoadNode(); + ~RoadNode(); + + static void* creator(); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& roadNode, tlHistory& history, tlDataChunk* outChunk ); + + static MTypeId id; + static const char* stringId; + + static const char* ROAD_SEG_NAME_SHORT; + static const char* ROAD_SEG_NAME_LONG; + static MObject mRoadSegments; + + static const char* INTERSECTION_START_SHORT; + static const char* INTERSECTION_START_LONG; + static MObject mIntersectionStart; + + static const char* INTERSECTION_END_SHORT; + static const char* INTERSECTION_END_LONG; + static MObject mIntersectionEnd; + + static const char* DENSITY_SHORT; + static const char* DENSITY_LONG; + static MObject mDensity; + + static const char* SPEED_SHORT; + static const char* SPEED_LONG; + static MObject mSpeed; + + static const char* DIFF_SHORT; + static const char* DIFF_LONG; + static MObject mDiff; + + static const char* SHORTCUT_SHORT; + static const char* SHORTCUT_LONG; + static MObject mShortcut; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/tiledisplay.cpp b/tools/trackeditor/code/nodes/tiledisplay.cpp new file mode 100644 index 0000000..e26f7f9 --- /dev/null +++ b/tools/trackeditor/code/nodes/tiledisplay.cpp @@ -0,0 +1,212 @@ +#include "tiledisplay.h" +#include "main/constants.h" +#include "main/trackeditor.h" +#include "utility/glext.h" +#include "utility/mext.h" + +MTypeId TileDisplayNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::TileDisplay ); +const char* TileDisplayNode::stringId = "TileDisplayNode"; + +const int TileDisplayNode::ORIGIN_COLOUR = 10; +const int TileDisplayNode::ROAD_COLOUR = 11; +const int TileDisplayNode::TOP_COLOUR = 12; +const int TileDisplayNode::BOTTOM_COLOUR = 13; +const int TileDisplayNode::LANE_COLOUR = 4; +const float TileDisplayNode::SCALE = 1.0f * TEConstants::Scale; +const float TileDisplayNode::LINE_WIDTH = 6.0f; +const float TileDisplayNode::Y_OFFSET = 0.5f; + +TileDisplayNode::TileDisplayNode() {}; + +TileDisplayNode::~TileDisplayNode() {}; + +//============================================================================== +// TileDisplayNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* TileDisplayNode::creator() +{ + return new TileDisplayNode(); +} +//============================================================================== +// TileDisplayNode::draw +//============================================================================== +// Description: Comment +// +// Parameters: ( M3dView& view, +// const MDagPath& path, +// M3dView::DisplayStyle displayStyle, +// M3dView::DisplayStatus displayStatus ) +// +// +// Return: void +// +//============================================================================== +void TileDisplayNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ) +{ + if ( TrackEditor::GetEditMode() != TrackEditor::OFF ) + { + //Display the arrows for the selected mesh. + MStatus status; + MSelectionList activeList; + MGlobal::getActiveSelectionList(activeList); + + MItSelectionList iter( activeList, MFn::kMesh, &status); + + unsigned int count = activeList.length(); + + //Draw + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + while ( !iter.isDone() ) + { + MDagPath meshDagPath; + iter.getDagPath( meshDagPath ); + + MFnMesh fnMesh( meshDagPath ); + + MPlug teOriginPlug = fnMesh.findPlug( MString("teOrigin"), &status ); + + if ( status == MStatus::kSuccess ) + { + //This is a mesh of the appropriate type + //Get all the vertices that are set and display arrows for them. + int originVert; + teOriginPlug.getValue( originVert ); + + int roadVert; + MPlug teRoadPlug = fnMesh.findPlug( MString("teRoad"), &status ); + assert( status ); + teRoadPlug.getValue( roadVert ); + + int topVert; + MPlug teTopPlug = fnMesh.findPlug( MString("teTop"), &status ); + assert( status ); + teTopPlug.getValue( topVert ); + + int bottomVert; + MPlug teBottomPlug = fnMesh.findPlug( MString("teBottom"), &status ); + assert( status ); + teBottomPlug.getValue( bottomVert ); + + int numLanes; + MPlug teLanesPlug = fnMesh.findPlug( MString("teLanes"), &status ); + assert( status ); + teLanesPlug.getValue( numLanes ); + + if ( numLanes < 1 ) + { + MExt::DisplayError( "The mesh %s has a road with no lanes!", fnMesh.name().asChar() ); + } + + MPoint teOriginPoint; + fnMesh.getPoint( originVert, teOriginPoint, MSpace::kWorld ); + teOriginPoint[1] += Y_OFFSET; + + MPoint teRoadPoint; + fnMesh.getPoint( roadVert, teRoadPoint, MSpace::kWorld ); + teRoadPoint[1] += Y_OFFSET; + + MPoint teTopPoint; + fnMesh.getPoint( topVert, teTopPoint, MSpace::kWorld ); + teTopPoint[1] += Y_OFFSET; + + MPoint teBottomPoint; + fnMesh.getPoint( bottomVert, teBottomPoint, MSpace::kWorld ); + teBottomPoint[1] += Y_OFFSET; + + //When we are in render mode, we draw the lines. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + if ( (value == GL_RENDER) ) + { + if ( originVert >= 0 ) + { + view.setDrawColor( ORIGIN_COLOUR, M3dView::kActiveColors ); + GLExt::drawSphere( 0.5f * SCALE, teOriginPoint ); + } + + if ( roadVert >= 0 ) + { + view.setDrawColor( ROAD_COLOUR, M3dView::kActiveColors ); + GLExt::drawSphere( 0.5f * SCALE, teRoadPoint ); + GLExt::drawLine( teOriginPoint, teRoadPoint, LINE_WIDTH ); + } + + if ( topVert >= 0 ) + { + view.setDrawColor( TOP_COLOUR, M3dView::kActiveColors ); + GLExt::drawSphere( 0.5f * SCALE, teTopPoint ); + GLExt::drawLine( teRoadPoint, teTopPoint, LINE_WIDTH ); + } + + if ( bottomVert >= 0 ) + { + view.setDrawColor( BOTTOM_COLOUR, M3dView::kActiveColors ); + GLExt::drawSphere( 0.5f * SCALE, teBottomPoint ); + GLExt::drawLine( teOriginPoint, teBottomPoint, LINE_WIDTH ); + } + + if ( numLanes > 0 ) + { + MVector scaledVector0, scaledVector1; + scaledVector0 = teBottomPoint - teOriginPoint; + scaledVector0 /= numLanes; + scaledVector0 /= 2; + + scaledVector1 = teTopPoint - teRoadPoint; + scaledVector1 /= numLanes; + scaledVector1 /= 2; + + unsigned int i; + for( i = 0; i < numLanes; ++i ) + { + MPoint p0, p1; + + p0 = teOriginPoint + scaledVector0 + (scaledVector0 * i * 2); + p1 = teRoadPoint + scaledVector1 + (scaledVector1 * i * 2); + + view.setDrawColor( LANE_COLOUR, M3dView::kActiveColors ); + GLExt::drawArrow( p0, p1, LINE_WIDTH ); + } + } + } + } + + iter.next(); + } + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================== +// TileDisplayNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus TileDisplayNode::initialize() +{ + return MStatus::kSuccess; +} + diff --git a/tools/trackeditor/code/nodes/tiledisplay.h b/tools/trackeditor/code/nodes/tiledisplay.h new file mode 100644 index 0000000..631778a --- /dev/null +++ b/tools/trackeditor/code/nodes/tiledisplay.h @@ -0,0 +1,35 @@ +#include "precompiled/PCH.h" + + +#ifndef TILE_DSIPLAY_H +#define TILE_DSIPLAY_H + +class TileDisplayNode : public MPxLocatorNode +{ +public: + TileDisplayNode(); + ~TileDisplayNode(); + + static void* creator(); + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + + static MTypeId id; + static const char* stringId; + +private: + static const int ORIGIN_COLOUR; + static const int ROAD_COLOUR; + static const int TOP_COLOUR; + static const int BOTTOM_COLOUR; + static const int LANE_COLOUR; + static const float SCALE; + static const float LINE_WIDTH; + static const float Y_OFFSET; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/treelineshapenode.cpp b/tools/trackeditor/code/nodes/treelineshapenode.cpp new file mode 100644 index 0000000..701ab9c --- /dev/null +++ b/tools/trackeditor/code/nodes/treelineshapenode.cpp @@ -0,0 +1,1343 @@ +#include <windows.h> +#include <GL/glu.h> + +#include <math.h> + +#include <radmath/radmath.hpp> + +#include "nodes/treelineshapenode.h" +#include "utility/mext.h" +#include "utility/mui.h" +#include "main/shapeconstants.h" +#include "main/constants.h" +#include "main/trackeditor.h" + +namespace TETreeLine +{ + +#define DORMANT_VERTEX_COLOR 8 // purple +#define ACTIVE_VERTEX_COLOR 16 // yellow + +// Vertex point size +// +#define POINT_SIZE 2.0 + +void SetQuadricDrawStyle (GLUquadricObj* qobj, int token) +{ + if ((token==SMOOTH_SHADED)||(token==FLAT_SHADED)) + { + gluQuadricNormals( qobj, GLU_SMOOTH ); + gluQuadricTexture( qobj, true ); + gluQuadricDrawStyle( qobj, GLU_FILL ); + } + else + { + gluQuadricDrawStyle( qobj, GLU_LINE ); + } +} + +void p3dBaseShapeUI::getDrawRequestsWireframe( MDrawRequest& request, const MDrawInfo& info ) +{ + request.setToken( WIREFRAME ); + + M3dView::DisplayStatus displayStatus = info.displayStatus(); + M3dView::ColorTable activeColorTable = M3dView::kActiveColors; + M3dView::ColorTable dormantColorTable = M3dView::kDormantColors; + switch ( displayStatus ) + { + case M3dView::kLead : + request.setColor( lead_color, activeColorTable ); + break; + case M3dView::kActive : + request.setColor( active_color, activeColorTable ); + break; + case M3dView::kActiveAffected : + request.setColor( active_affected_color, activeColorTable ); + break; + case M3dView::kDormant : + request.setColor( dormant_color, dormantColorTable ); + break; + case M3dView::kHilite : + request.setColor( hilite_color, activeColorTable ); + break; + } +} + +void p3dBaseShapeUI::getDrawRequestsShaded( MDrawRequest& request, const MDrawInfo& info, + MDrawRequestQueue& queue, MDrawData& data ) +{ + // Need to get the material info + // + MDagPath path = info.multiPath(); // path to your dag object + M3dView view = info.view();; // view to draw to + MMaterial material = MPxSurfaceShapeUI::material( path ); + M3dView::DisplayStatus displayStatus = info.displayStatus(); + + // Evaluate the material and if necessary, the texture. + // + if ( ! material.evaluateMaterial( view, path ) ) + { + MExt::DisplayError( "Could not evaluate\n" ); + } + + if ( material.materialIsTextured() ) + { + material.evaluateTexture( data ); + } + + request.setMaterial( material ); + + bool materialTransparent = false; + material.getHasTransparency( materialTransparent ); + if ( materialTransparent ) + { + request.setIsTransparent( true ); + } + + // create a draw request for wireframe on shaded if + // necessary. + // + if ( (displayStatus == M3dView::kActive) || + (displayStatus == M3dView::kLead) || + (displayStatus == M3dView::kHilite) ) + { + MDrawRequest wireRequest = info.getPrototype( *this ); + wireRequest.setDrawData( data ); + getDrawRequestsWireframe( wireRequest, info ); + wireRequest.setToken( WIREFRAME_SHADED ); + wireRequest.setDisplayStyle( M3dView::kWireFrame ); + queue.add( wireRequest ); + } +} + +///////////////////////////////////////////////////////////////////// +// SHAPE NODE IMPLEMENTATION +///////////////////////////////////////////////////////////////////// +MTypeId TreelineShapeNode::id(TEConstants::NodeIDs::TreeLine); +const char* TreelineShapeNode::stringId = "TreelineShapeNode"; + +const char* TreelineShapeNode::SHADER_NAME_LONG = "material"; +const char* TreelineShapeNode::SHADER_NAME_SHORT = "mt"; +MObject TreelineShapeNode::sShader; + +const char* TreelineShapeNode::USCALE_NAME_LONG = "uscale"; +const char* TreelineShapeNode::USCALE_NAME_SHORT = "us"; +MObject TreelineShapeNode::sUScale; + +const char* TreelineShapeNode::COLOUR_NAME_LONG = "colour"; +const char* TreelineShapeNode::COLOUR_NAME_SHORT = "clr"; +MObject TreelineShapeNode::sColour; + +const char* TreelineShapeNode::RED_NAME_LONG = "red"; +const char* TreelineShapeNode::RED_NAME_SHORT = "r"; +MObject TreelineShapeNode::sRed; + +const char* TreelineShapeNode::GREEN_NAME_LONG = "green"; +const char* TreelineShapeNode::GREEN_NAME_SHORT = "g"; +MObject TreelineShapeNode::sGreen; + +const char* TreelineShapeNode::BLUE_NAME_LONG = "blue"; +const char* TreelineShapeNode::BLUE_NAME_SHORT = "b"; +MObject TreelineShapeNode::sBlue; + +const char* TreelineShapeNode::ALPHA_NAME_LONG = "alpha"; +const char* TreelineShapeNode::ALPHA_NAME_SHORT = "a"; +MObject TreelineShapeNode::sAlpha; + +const char* TreelineShapeNode::HEIGHT_NAME_LONG = "height"; +const char* TreelineShapeNode::HEIGHT_NAME_SHORT = "h"; +MObject TreelineShapeNode::sHeight; + +TreelineShapeNode::TreelineShapeNode() +{ +} + +TreelineShapeNode::~TreelineShapeNode() +{ +} + +//******************************************************************************************** +// Description +// +// When instances of this node are created internally, the MObject associated +// with the instance is not created until after the constructor of this class +// is called. This means that no member functions of MPxSurfaceShape can +// be called in the constructor. +// The postConstructor solves this problem. Maya will call this function +// after the internal object has been created. +// As a general rule do all of your initialization in the postConstructor. +//******************************************************************************************** +void TreelineShapeNode::postConstructor() +{ + // This call allows the shape to have shading groups assigned + setRenderable( true ); +} + +//******************************************************************************************** +// Compute attribute values of the node +//******************************************************************************************** +MStatus TreelineShapeNode::compute( const MPlug& plug, MDataBlock& datablock ) +{ + return MS::kSuccess; +} + +//******************************************************************************************** +// Capture when connections are made to this shape +//******************************************************************************************** +MStatus TreelineShapeNode::connectionMade ( const MPlug &plug, const MPlug &otherPlug, bool asSrc ) +{ + MObject shaderObj = otherPlug.node(); + if ( asSrc && shaderObj.hasFn(MFn::kShadingEngine) ) + { + MFnDependencyNode parentFn( plug.node() ); + MFnDependencyNode shaderFn( shaderObj ); + + // connect this material with the chosen object + + MStatus status; + MPlug parentMaterialPlug = parentFn.findPlug( SHADER_NAME_LONG, &status ); + + if ( !status ) + { + MExt::DisplayError( "Could not assign %s to %s", shaderFn.name(), parentFn.name() ); + } + else + { + parentMaterialPlug.setLocked( false ); + parentMaterialPlug.setValue( shaderFn.name() ); + parentMaterialPlug.setLocked( true ); + } + } + + // let Maya process the connection too + return MS::kUnknownParameter; +} + +//******************************************************************************************** +// Create instance of shape +//******************************************************************************************** +void* TreelineShapeNode::creator() +{ + return new TreelineShapeNode(); +} + +//******************************************************************************************** +// Create and initialize all attributes in maya +//******************************************************************************************** +MStatus TreelineShapeNode::initialize() +{ + MStatus status; + MFnTypedAttribute strAttr; + MFnNumericAttribute numAttr; + MFnCompoundAttribute compAttr; + + sShader = strAttr.create( SHADER_NAME_LONG, SHADER_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( strAttr.setInternal( false ) ); + RETURN_STATUS_ON_FAILURE( strAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( strAttr.setKeyable( false ) ); + status = addAttribute( sShader ); + RETURN_STATUS_ON_FAILURE( status ); + + sUScale = numAttr.create( USCALE_NAME_LONG, USCALE_NAME_SHORT, MFnNumericData::kDouble, 1.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.01) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(100.0) ); + RETURN_STATUS_ON_FAILURE( strAttr.setInternal( false ) ); + RETURN_STATUS_ON_FAILURE( strAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( strAttr.setKeyable( true ) ); + status = addAttribute( sUScale ); + RETURN_STATUS_ON_FAILURE( status ); + + // Compound colour attribute + sRed = numAttr.create ( RED_NAME_LONG, RED_NAME_SHORT, MFnNumericData::kFloat, 1.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(1.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + + sGreen = numAttr.create ( GREEN_NAME_LONG, GREEN_NAME_SHORT, MFnNumericData::kFloat, 1.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(1.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + + sBlue = numAttr.create ( BLUE_NAME_LONG, BLUE_NAME_SHORT, MFnNumericData::kFloat, 1.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(1.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + + sColour = numAttr.create( COLOUR_NAME_LONG, COLOUR_NAME_SHORT, sRed, sGreen, sBlue, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setUsedAsColor(true) ); + status = addAttribute( sColour ); + RETURN_STATUS_ON_FAILURE( status ); + + sAlpha = numAttr.create ( ALPHA_NAME_LONG, ALPHA_NAME_SHORT, MFnNumericData::kFloat, 1.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(1.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setInternal( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + status = addAttribute( sAlpha ); + RETURN_STATUS_ON_FAILURE( status ); + + + sHeight = numAttr.create( HEIGHT_NAME_LONG, HEIGHT_NAME_SHORT, MFnNumericData::kFloat, 10.0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.1) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(100.0) ); + RETURN_STATUS_ON_FAILURE( numAttr.setInternal( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setHidden( false ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setKeyable( true ) ); + status = addAttribute( sHeight ); + + return MS::kSuccess; +} + +//******************************************************************************************** +// Returns the bounding box for the shape. +// In this case just use the radius and height attributes +// to determine the bounding box. +//******************************************************************************************** +MBoundingBox TreelineShapeNode::boundingBox() const +{ + MBoundingBox result; + + MStatus status; + MObject obj = thisMObject(); + + float height = 1.0f; + + MFnDagNode dagNodeFn(obj); + MPlug plug; + + plug = dagNodeFn.findPlug( sHeight, &status ); + plug.getValue( height ); + + MPlug vertices = dagNodeFn.findPlug( mControlPoints, &status ); + assert( status ); + + unsigned int i; + for ( i = 0; i < vertices.numElements(); ++i ) + { + MPoint point; + MPlug vertex1 = vertices.elementByLogicalIndex( i, &status ); + assert( status ); + + MPlug x1 = vertex1.child( mControlValueX, &status ); + assert( status ); + x1.getValue( point.x ); + + MPlug y1 = vertex1.child( mControlValueY, &status ); + assert( status ); + y1.getValue( point.y ); + + MPlug z1 = vertex1.child( mControlValueZ, &status ); + assert( status ); + z1.getValue( point.z ); + + result.expand( point ); + + point.y = point.y + ( height * TEConstants::Scale ); + + result.expand( point ); + } + + return result; +} + +//============================================================================= +// TreelineShapeNode::componentToPlugs +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& component, MSelectionList& selectionList ) +// +// Return: void +// +//============================================================================= +void TreelineShapeNode::componentToPlugs( MObject& component, + MSelectionList& selectionList ) const +{ + if ( component.hasFn(MFn::kMeshVertComponent) ) + { + MFnSingleIndexedComponent fnVtxComp( component ); + MObject thisNode = thisMObject(); + MPlug plug( thisNode, mControlPoints ); + int len = fnVtxComp.elementCount(); + for ( int i = 0; i < len; i++ ) + { + MPlug vtxPlug = plug.elementByLogicalIndex( fnVtxComp.element(i) ); + selectionList.add( vtxPlug ); + } + } +} + +//============================================================================= +// TreelineShapeNode::matchComponent +//============================================================================= +// Description: Comment +// +// Parameters: ( const MSelectionList& item, const MAttributeSpecArray& spec, MSelectionList& list ) +// +// Return: MPxSurfaceShape +// +//============================================================================= +MPxSurfaceShape::MatchResult +TreelineShapeNode::matchComponent( const MSelectionList& item, + const MAttributeSpecArray& spec, + MSelectionList& list ) +// +// Description: +// +// Component/attribute matching method. +// This method validates component names and indices which are +// specified as a string and adds the corresponding component +// to the passed in selection list. +// +// For instance, select commands such as "select shape1.vtx[0:7]" +// are validated with this method and the corresponding component +// is added to the selection list. +// +// Arguments +// +// item - DAG selection item for the object being matched +// spec - attribute specification object +// list - list to add components to +// +// Returns +// +// the result of the match +// +{ + MPxSurfaceShape::MatchResult result = MPxSurfaceShape::kMatchOk; + MAttributeSpec attrSpec = spec[0]; + int dim = attrSpec.dimensions(); + + // Look for attributes specifications of the form : + // vtx[ index ] + // vtx[ lower:upper ] + // + if ( (1 == spec.length()) && + (dim > 0) && + (attrSpec.name() == "controlPoints" ) ) + { + MObject node; + item.getDependNode( 0, node ); + MFnDependencyNode fnDepNode( node ); + int numVertices = fnDepNode.findPlug( mControlPoints ).numElements(); + MAttributeIndex attrIndex = attrSpec[0]; + + int upper = 0; + int lower = 0; + if ( attrIndex.hasLowerBound() ) { + attrIndex.getLower( lower ); + } + if ( attrIndex.hasUpperBound() ) { + attrIndex.getUpper( upper ); + } + + // Check the attribute index range is valid + // + if ( (lower > upper) || (upper >= numVertices) ) { + result = MPxSurfaceShape::kMatchInvalidAttributeRange; + } + else { + MDagPath path; + item.getDagPath( 0, path ); + MFnSingleIndexedComponent fnVtxComp; + MObject vtxComp = fnVtxComp.create( MFn::kMeshVertComponent ); + + for ( int i=lower; i<=upper; i++ ) + { + fnVtxComp.addElement( i ); + } + list.add( path, vtxComp ); + } + } + else { + // Pass this to the parent class + return MPxSurfaceShape::matchComponent( item, spec, list ); + } + + return result; +} + +//============================================================================= +// TreelineShapeNode::match +//============================================================================= +// Description: Comment +// +// Parameters: ( const MSelectionMask & mask, const MObjectArray& componentList ) +// +// Return: bool +// +//============================================================================= +bool TreelineShapeNode::match( const MSelectionMask & mask, const MObjectArray& componentList ) const +// +// Description: +// +// Check for matches between selection type / component list, and +// the type of this shape / or it's components +// +// This is used by sets and deformers to make sure that the selected +// components fall into the "vertex only" category. +// +// Arguments +// +// mask - selection type mask +// componentList - possible component list +// +// Returns +// true if matched any +// +{ + bool result = false; + + if( componentList.length() == 0 ) { + result = mask.intersects( MSelectionMask::kSelectMeshes ); + } + else + { + for ( int i=0; i<(int)componentList.length(); i++ ) + { + if ( (componentList[i].apiType() == MFn::kMeshVertComponent) && + (mask.intersects(MSelectionMask::kSelectMeshVerts)) + ) + { + result = true; + break; + } + } + } + + return result; +} + +//============================================================================= +// TreelineShapeNode::transformUsing +//============================================================================= +// Description: Comment +// +// Parameters: ( const MMatrix & mat, const MObjectArray & componentList ) +// +// Return: void +// +//============================================================================= +void TreelineShapeNode::transformUsing( const MMatrix & mat, + const MObjectArray & componentList ) +// +// Description +// +// Transforms the given components. This method is used by +// the move, rotate, and scale tools in component mode. +// Bounding box has to be updated here, so do the normals and +// any other attributes that depend on vertex positions. +// +// Arguments +// +// mat - matrix to tranform the components by +// componentList - list of components to be transformed +// +{ + MStatus stat; + + MFnDependencyNode fnDepNode( thisMObject() ); + MPlug vertices = fnDepNode.findPlug( mControlPoints ); + + int len = componentList.length(); + int i; + for ( i=0; i<len; i++ ) + { + MObject comp = componentList[i]; + MFnSingleIndexedComponent fnComp( comp ); + int elemCount = fnComp.elementCount(); + for ( int idx=0; idx<elemCount; idx++ ) + { + int elemIndex = fnComp.element( idx ); + MPlug vertex = vertices.elementByLogicalIndex( elemIndex ); + + MPoint point; + vertex.child(0).getValue( point.x ); + vertex.child(1).getValue( point.y ); + vertex.child(2).getValue( point.z ); + + point *= mat; + + vertex.child(0).setValue( point.x ); + vertex.child(1).setValue( point.y ); + vertex.child(2).setValue( point.z ); + } + } + + // Moving vertices will likely change the bounding box. + // + + // Tell maya the bounding box for this object has changed + // and thus "boundingBox()" needs to be called. + // + childChanged( MPxSurfaceShape::kBoundingBoxChanged ); +} + +//============================================================================= +// TreelineShapeNode::closestPoint +//============================================================================= +// Description: Comment +// +// Parameters: ( const MPoint & toThisPoint, MPoint & theClosestPoint, double tolerance ) +// +// Return: void +// +//============================================================================= +void TreelineShapeNode::closestPoint ( const MPoint& toThisPoint, + MPoint& theClosestPoint, + double tolerance ) +{ + MStatus stat; + + MFnDependencyNode fnDepNode( thisMObject() ); + MPlug vertices = fnDepNode.findPlug( mControlPoints ); + + bool found = false; + double dist = 10000000.0; + + unsigned int i; + for ( i = 0; i < vertices.numElements(); ++i ) + { + MPlug vertex = vertices.elementByLogicalIndex( i ); + MPoint point; + + vertex.child( 0 ).getValue( point.x ); + vertex.child( 1 ).getValue( point.y ); + vertex.child( 2 ).getValue( point.z ); + + if ( point.distanceTo( toThisPoint ) < dist ) + { + dist = point.distanceTo( toThisPoint ); + theClosestPoint = point; + } + } +} + +//============================================================================= +// TreelineShapeNode::SnapTreeline +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& treeline ) +// +// Return: void +// +//============================================================================= +void TreelineShapeNode::SnapTreeline( MObject& treeline ) +{ + MFnDependencyNode fnDepNode( treeline ); + + MPlug vertices = fnDepNode.findPlug( mControlPoints ); + + unsigned int i; + + for ( i = 0; i < vertices.numElements(); ++i ) + { + MPlug vertex = vertices.elementByLogicalIndex( i ); + + MPoint point; + + vertex.child( 0 ).getValue( point.x ); + vertex.child( 1 ).getValue( point.y ); + vertex.child( 2 ).getValue( point.z ); + + MPoint intersectPoint; + //Look down... + if ( MExt::MeshIntersectAlongVector( point, MPoint(0, -100000.0, 0 ), intersectPoint ) ) + { + vertex.child( 0 ).setValue( intersectPoint.x ); + vertex.child( 1 ).setValue( intersectPoint.y ); + vertex.child( 2 ).setValue( intersectPoint.z ); + } + else + { + //Try looking up... + if ( MExt::MeshIntersectAlongVector( point, MPoint(0, 100000.0, 0 ), intersectPoint ) ) + { + vertex.child( 0 ).setValue( intersectPoint.x ); + vertex.child( 1 ).setValue( intersectPoint.y ); + vertex.child( 2 ).setValue( intersectPoint.z ); + } + } + } +} + +void TreelineShapeNode::ConvertToGeometry( MObject& obj ) +{ + MFnMesh newMesh; + MObject newMeshObj; + + MFnDependencyNode fnDepNode( obj ); + MPlug vertices = fnDepNode.findPlug( mControlPoints ); + + if ( vertices.numElements() >= 2 ) + { + double height; + fnDepNode.findPlug( sHeight ).getValue( height ); + + double uScale; + fnDepNode.findPlug( sUScale).getValue( uScale ); + + MFloatArray uArray, vArray; + MIntArray uvCounts, uvIds; + + unsigned int i = 0; + unsigned int j = 0; + do + { + //Create the new mesh... + MPointArray points; + MPoint point1, point2, point3, point4; + + MPlug vertex1 = vertices.elementByLogicalIndex( i ); + vertex1.child(0).getValue( point1.x ); + vertex1.child(1).getValue( point1.y ); + vertex1.child(2).getValue( point1.z ); + + point2 = point1; + point1.y += height * TEConstants::Scale; + + points.append( point1 ); + points.append( point2 ); + + MPlug vertex2 = vertices.elementByLogicalIndex( i + 1 ); + vertex2.child(0).getValue( point3.x ); + vertex2.child(1).getValue( point3.y ); + vertex2.child(2).getValue( point3.z ); + + point4 = point3; + point4.y += height * TEConstants::Scale; + + points.append( point3 ); + points.append( point4 ); + + newMeshObj = newMesh.addPolygon( points ); + + double dist = point2.distanceTo( point3 ); + + float U = ceil( dist / (uScale * TEConstants::Scale ) ); + + uArray.append( 0 ); + uArray.append( 0 ); + uArray.append( U ); + uArray.append( U ); + + vArray.append( 1 ); + vArray.append( 0 ); + vArray.append( 0 ); + vArray.append( 1 ); + + uvCounts.append( 4 ); + + uvIds.append( 0 + j ); + uvIds.append( 1 + j ); + uvIds.append( 2 + j ); + uvIds.append( 3 + j ); + + ++i; + j += 4; + } + while ( i < vertices.numElements() - 1 ); + + MString material; + fnDepNode.findPlug( sShader ).getValue( material ); + + if ( material.length() > 0 ) + { + //Set the material to the new object. + + newMesh.setUVs( uArray, vArray ); + newMesh.assignUVs( uvCounts, uvIds ); + + //MEL command for assigning the texture. + //sets -e -forceElement pure3dSimpleShader1SG polySurface1; + MString meshName = newMesh.name(); + + MString cmd; + + cmd += MString("sets -e -forceElement ") + material + MString(" ") + meshName; + + MStatus status; + MGlobal::executeCommand( cmd, status ); + } + } + else + { + assert(false); + MExt::DisplayError( "Treeline: %s is invalid for converting to geometry!", fnDepNode.name().asChar() ); + } + + if ( TrackEditor::GetDeleteTreelines() ) + { + MExt::DeleteNode( obj, true ); + } +} + + +///////////////////////////////////////////////////////////////////// +// UI IMPLEMENTATION +///////////////////////////////////////////////////////////////////// + +TreelineShapeNodeUI::TreelineShapeNodeUI() +{ +} + +TreelineShapeNodeUI::~TreelineShapeNodeUI() +{ +} + +void* TreelineShapeNodeUI::creator() +{ + return new TreelineShapeNodeUI(); +} + +//******************************************************************************************** +// The draw data is used to pass geometry through the +// draw queue. The data should hold all the information +// needed to draw the shape. +//******************************************************************************************** +void TreelineShapeNodeUI::getDrawRequests( const MDrawInfo & info, bool objectAndActiveOnly, MDrawRequestQueue & queue ) +{ + MDrawData data; + MDrawRequest request = info.getPrototype( *this ); + TreelineShapeNode* shapeNode = (TreelineShapeNode*)surfaceShape(); + getDrawData( NULL, data ); + request.setDrawData( data ); + + // Use display status to determine what color to draw the object + switch ( info.displayStyle() ) + { + case M3dView::kGouraudShaded : + request.setToken( SMOOTH_SHADED ); + getDrawRequestsShaded( request, info, queue, data ); + queue.add( request ); + break; + + case M3dView::kFlatShaded : + request.setToken( FLAT_SHADED ); + getDrawRequestsShaded( request, info, queue, data ); + queue.add( request ); + break; + + default : + request.setToken(WIREFRAME); + getDrawRequestsWireframe( request, info ); + queue.add( request ); + break; + + } + + // Add draw requests for components + // + if ( !objectAndActiveOnly ) + { + // Inactive components + // + if ( (info.displayStyle() == M3dView::kPoints) || + (info.displayStatus() == M3dView::kHilite) ) + { + MDrawRequest vertexRequest = info.getPrototype( *this ); + vertexRequest.setDrawData( data ); + vertexRequest.setToken( VERTICES ); + vertexRequest.setColor( DORMANT_VERTEX_COLOR, //TODO: PICK COLOURS + M3dView::kActiveColors ); + + queue.add( vertexRequest ); + } + + // Active components + // + if ( surfaceShape()->hasActiveComponents() ) { + + MDrawRequest activeVertexRequest = info.getPrototype( *this ); + activeVertexRequest.setDrawData( data ); + activeVertexRequest.setToken( VERTICES ); + activeVertexRequest.setColor( ACTIVE_VERTEX_COLOR, //TODO: PICK COLOURS + M3dView::kActiveColors ); + + MObjectArray clist = surfaceShape()->activeComponents(); + MObject vertexComponent = clist[0]; // Should filter list + activeVertexRequest.setComponent( vertexComponent ); + + queue.add( activeVertexRequest ); + } + } + +} + +//******************************************************************************************** +// Actual draw call +//******************************************************************************************** +void TreelineShapeNodeUI::drawQuad(int drawMode) const +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + TreelineShapeNode* shapeNode = (TreelineShapeNode*)surfaceShape(); + MFnDagNode dagNodeFn(shapeNode->thisMObject()); + MPlug plug; + + MStatus status; + float height; + MPlug heightPlug = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::sHeight, &status ); + assert( status ); + + heightPlug.getValue( height ); + + MPlug vertices = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::mControlPoints, &status ); + assert( status ); + + if ( vertices.numElements() >= 2 ) + { + double uScale; + MPlug uScalePlug = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::sUScale, &status ); + assert( status ); + uScalePlug.getValue( uScale ); + + int primType; + if ((drawMode==SMOOTH_SHADED)||(drawMode==FLAT_SHADED)) + { + glPolygonMode ( GL_FRONT_AND_BACK, GL_FILL); + primType = GL_POLYGON; + } + else + { + glPolygonMode ( GL_FRONT_AND_BACK, GL_LINE); + primType = GL_LINE_LOOP; + } + + glPushMatrix(); + + unsigned int i = 0; + + do + { + MPoint point1, point2; + MPlug vertex1 = vertices.elementByLogicalIndex( i, &status ); + assert( status ); + + MPlug vertex2 = vertices.elementByLogicalIndex( i + 1, &status ); + assert( status ); + + MPlug x1 = vertex1.child( TETreeLine::TreelineShapeNode::mControlValueX, &status ); + assert( status ); + x1.getValue( point1.x ); + + MPlug y1 = vertex1.child( TETreeLine::TreelineShapeNode::mControlValueY, &status ); + assert( status ); + y1.getValue( point1.y ); + + MPlug z1 = vertex1.child( TETreeLine::TreelineShapeNode::mControlValueZ, &status ); + assert( status ); + z1.getValue( point1.z ); + + MPlug x2 = vertex2.child( TETreeLine::TreelineShapeNode::mControlValueX, &status ); + assert( status ); + x2.getValue( point2.x ); + + MPlug y2 = vertex2.child( TETreeLine::TreelineShapeNode::mControlValueY, &status ); + assert( status ); + y2.getValue( point2.y ); + + MPlug z2 = vertex2.child( TETreeLine::TreelineShapeNode::mControlValueZ, &status ); + assert( status ); + z2.getValue( point2.z ); + + MPoint normal, vect; + rmt::Vector normalVec; + rmt::Vector v; + + double dist = point1.distanceTo( point2 ); + + double U = ceil( dist / (uScale * TEConstants::Scale ) ); + + vect = point2 - point1; + v.Set( vect.x, vect.y, vect.z ); + normalVec.CrossProduct( v, rmt::Vector( 0.0f, 1.0f, 0.0f ) ); + + glBegin(primType); + glNormal3f( normalVec.x, normalVec.y, normalVec.z ); //TODO: CALCULATE THIS! + glTexCoord2f ( 0, 1 ); + glVertex3f( point1.x, + (point1.y) + (height * TEConstants::Scale), + point1.z ); + glTexCoord2f ( 0, 0 ); + glVertex3f( point1.x, + point1.y, + point1.z ); + glTexCoord2f ( U, 0 ); + glVertex3f( point2.x, + point2.y, + point2.z ); + glTexCoord2f ( U, 1 ); + glVertex3f( point2.x, + (point2.y) + (height * TEConstants::Scale), + point2.z ); + glEnd(); + + ++i; + } + while ( i < vertices.numElements() - 1 ); + + glPopMatrix(); + + glPolygonMode ( GL_FRONT_AND_BACK, GL_FILL); + } + glPopAttrib(); +} + +//******************************************************************************************** +// From the given draw request, get the draw data and display the quad +//******************************************************************************************** +void TreelineShapeNodeUI::draw( const MDrawRequest & request, M3dView & view ) const +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + MDagPath dagPath = request.multiPath(); + MDrawData data = request.drawData(); + short token = request.token(); + bool drawTexture = false; + + view.beginGL(); + + if ( (token == SMOOTH_SHADED) || (token == FLAT_SHADED) ) + { + glEnable( GL_POLYGON_OFFSET_FILL ); + // Set up the material + // + MMaterial material = request.material(); + material.setMaterial(dagPath,false); + + // Enable texturing + // + drawTexture = material.materialIsTextured(); + if ( drawTexture ) glEnable(GL_TEXTURE_2D); + + // Apply the texture to the current view + // + if ( drawTexture ) + { + material.applyTexture( view, data ); + } + } + + if ( token == VERTICES ) + { + drawVertices( request, view ); + } + else + { + drawQuad(token); + } + + // Turn off texture mode + // + if ( drawTexture ) glDisable(GL_TEXTURE_2D); + + view.endGL(); + glPopAttrib(); +} + +//******************************************************************************************** +// Select function. Gets called when the bbox for the object is selected. +// This function just selects the object without doing any intersection tests. +//******************************************************************************************** +bool TreelineShapeNodeUI::select( MSelectInfo &selectInfo, MSelectionList &selectionList, MPointArray &worldSpaceSelectPts ) const +{ + bool selected = false; + + if ( selectInfo.displayStatus() == M3dView::kHilite ) { + selected = selectVertices( selectInfo, selectionList,worldSpaceSelectPts ); + } + + if ( !selected ) + { + M3dView view = selectInfo.view(); + + // + // Re-Draw the object and see if they lie withing the selection area + // Sets OpenGL's render mode to select and stores + // selected items in a pick buffer + // + view.beginSelect(); + + switch ( selectInfo.displayStyle() ) + { + case M3dView::kGouraudShaded : + drawQuad(SMOOTH_SHADED); + break; + + case M3dView::kFlatShaded : + drawQuad(FLAT_SHADED); + break; + + default : + drawQuad(WIREFRAME); + break; + } + + if( view.endSelect() > 0 ) + { + MSelectionMask priorityMask( MSelectionMask::kSelectObjectsMask ); + MSelectionList item; + item.add( selectInfo.selectPath() ); + MPoint xformedPt; + selectInfo.addSelection( item, xformedPt, selectionList, worldSpaceSelectPts, priorityMask, false ); + return true; + } + } + + return selected; +} + +//============================================================================= +// TreelineShapeNodeUI::drawVertices +//============================================================================= +// Description: Comment +// +// Parameters: ( const MDrawRequest & request, M3dView & view ) +// +// Return: void +// +//============================================================================= +void TreelineShapeNodeUI::drawVertices( const MDrawRequest & request, M3dView & view ) const +// +// Description: +// +// Component (vertex) drawing routine +// +// Arguments: +// +// request - request to be drawn +// view - view to draw into +// +{ + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + MDrawData data = request.drawData(); + TreelineShapeNode* shapeNode = (TreelineShapeNode*)surfaceShape(); + MFnDagNode dagNodeFn(shapeNode->thisMObject()); + + view.beginGL(); + + // Query current state so it can be restored + // + bool lightingWasOn = glIsEnabled( GL_LIGHTING ) ? true : false; + if ( lightingWasOn ) { + glDisable( GL_LIGHTING ); + } + float lastPointSize; + glGetFloatv( GL_POINT_SIZE, &lastPointSize ); + + // Set the point size of the vertices + // + glPointSize( POINT_SIZE ); + + // If there is a component specified by the draw request + // then loop over comp (using an MFnComponent class) and draw the + // active vertices, otherwise draw all vertices. + // + MObject comp = request.component(); + if ( ! comp.isNull() ) + { + MPlug vertices = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::mControlPoints ); + + MFnSingleIndexedComponent fnComponent( comp ); + for ( int i=0; i<fnComponent.elementCount(); i++ ) + { + int index = fnComponent.element( i ); + glBegin( GL_POINTS ); + MPlug vertexPlug = vertices.elementByLogicalIndex( index ); + + MPoint vertex; + vertexPlug.child( 0 ).getValue( vertex.x ); + vertexPlug.child( 1 ).getValue( vertex.y ); + vertexPlug.child( 2 ).getValue( vertex.z ); + + glVertex3f( (float)vertex[0], + (float)vertex[1], + (float)vertex[2] ); + glEnd(); + + char annotation[32]; + sprintf( annotation, "%d", index ); + view.drawText( annotation, vertex ); + } + } + else + { + MPlug vertices = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::mControlPoints ); + + for ( int i=0; i<vertices.numElements(); i++ ) + { + glBegin( GL_POINTS ); + MPlug vertexPlug = vertices.elementByLogicalIndex( i ); + + MPoint vertex; + vertexPlug.child( 0 ).getValue( vertex.x ); + vertexPlug.child( 1 ).getValue( vertex.y ); + vertexPlug.child( 2 ).getValue( vertex.z ); + + glVertex3f( (float)vertex[0], + (float)vertex[1], + (float)vertex[2] ); + glEnd(); + } + } + // Restore the state + // + if ( lightingWasOn ) { + glEnable( GL_LIGHTING ); + } + glPointSize( lastPointSize ); + + view.endGL(); + glPopAttrib(); +} + +//============================================================================= +// TreelineShapeNodeUI::selectVertices +//============================================================================= +// Description: Comment +// +// Parameters: ( MSelectInfo &selectInfo, MSelectionList &selectionList, MPointArray &worldSpaceSelectPts ) +// +// Return: bool +// +//============================================================================= +bool TreelineShapeNodeUI::selectVertices( MSelectInfo &selectInfo, + MSelectionList &selectionList, + MPointArray &worldSpaceSelectPts ) const +// +// Description: +// +// Vertex selection. +// +// Arguments: +// +// selectInfo - the selection state information +// selectionList - the list of selected items to add to +// worldSpaceSelectPts - +// +{ + bool selected = false; + M3dView view = selectInfo.view(); + + MPoint xformedPoint; + MPoint currentPoint; + MPoint selectionPoint; + double z,previousZ = 0.0; + int closestPointVertexIndex = -1; + + const MDagPath & path = selectInfo.multiPath(); + + // Create a component that will store the selected vertices + // + MFnSingleIndexedComponent fnComponent; + MObject surfaceComponent = fnComponent.create( MFn::kMeshVertComponent ); + int vertexIndex; + + // if the user did a single mouse click and we find > 1 selection + // we will use the alignmentMatrix to find out which is the closest + // + MMatrix alignmentMatrix; + MPoint singlePoint; + bool singleSelection = selectInfo.singleSelection(); + if( singleSelection ) { + alignmentMatrix = selectInfo.getAlignmentMatrix(); + } + + // Get the geometry information + // + TreelineShapeNode* shapeNode = (TreelineShapeNode*)surfaceShape(); + MFnDagNode dagNodeFn(shapeNode->thisMObject()); + + // Loop through all vertices of the mesh and + // see if they lie withing the selection area + // + MPlug vertices = dagNodeFn.findPlug( TETreeLine::TreelineShapeNode::mControlPoints ); + + int numVertices = vertices.numElements(); + + for ( vertexIndex=0; vertexIndex<numVertices; vertexIndex++ ) + { + MPlug vertexPlug = vertices.elementByLogicalIndex( vertexIndex ); + + MPoint currentPoint; + vertexPlug.child( 0 ).getValue( currentPoint.x ); + vertexPlug.child( 1 ).getValue( currentPoint.y ); + vertexPlug.child( 2 ).getValue( currentPoint.z ); + + // Sets OpenGL's render mode to select and stores + // selected items in a pick buffer + // + view.beginSelect(); + + glBegin( GL_POINTS ); + + glVertex3f( (float)currentPoint[0], + (float)currentPoint[1], + (float)currentPoint[2] ); + glEnd(); + + if ( view.endSelect() > 0 ) // Hit count > 0 + { + selected = true; + + if ( singleSelection ) { + xformedPoint = currentPoint; + xformedPoint.homogenize(); + xformedPoint*= alignmentMatrix; + z = xformedPoint.z; + if ( closestPointVertexIndex < 0 || z > previousZ ) { + closestPointVertexIndex = vertexIndex; + singlePoint = currentPoint; + previousZ = z; + } + } else { + // multiple selection, store all elements + // + fnComponent.addElement( vertexIndex ); + } + } + } + + // If single selection, insert the closest point into the array + // + if ( selected && selectInfo.singleSelection() ) { + fnComponent.addElement(closestPointVertexIndex); + + // need to get world space position for this vertex + // + selectionPoint = singlePoint; + selectionPoint *= path.inclusiveMatrix(); + } + + // Add the selected component to the selection list + // + if ( selected ) { + MSelectionList selectionItem; + selectionItem.add( path, surfaceComponent ); + + MSelectionMask mask( MSelectionMask::kSelectComponentsMask ); + selectInfo.addSelection( + selectionItem, selectionPoint, + selectionList, worldSpaceSelectPts, + mask, true ); + } + + return selected; +} + +} //namespace TETreeLine + + diff --git a/tools/trackeditor/code/nodes/treelineshapenode.h b/tools/trackeditor/code/nodes/treelineshapenode.h new file mode 100644 index 0000000..e1a25ac --- /dev/null +++ b/tools/trackeditor/code/nodes/treelineshapenode.h @@ -0,0 +1,142 @@ +#ifndef TREELINE_SHAPE_NODE_H +#define TREELINE_SHAPE_NODE_H + +#include "precompiled/PCH.h" + +class tlDataChunk; + +namespace TETreeLine +{ + +class p3dBaseShape : public MPxSurfaceShape +{ +public: + p3dBaseShape() {} + virtual ~p3dBaseShape() {} +}; + +class p3dBaseShapeUI : public MPxSurfaceShapeUI +{ +public: + p3dBaseShapeUI() + { + lead_color = 18; //green + active_color = 15; //white + active_affected_color = 8; //purple + dormant_color = 4; //blue + hilite_color = 17; //pale blue + } + virtual ~p3dBaseShapeUI() {} + + virtual void getDrawRequestsWireframe( MDrawRequest&, const MDrawInfo& ); + virtual void getDrawRequestsShaded( MDrawRequest&, const MDrawInfo&, MDrawRequestQueue&, MDrawData& data ); + +protected: + int lead_color; + int active_color; + int active_affected_color; + int dormant_color; + int hilite_color; +}; + +///////////////////////////////////////////////////////////////////// +// +// Shape class - defines the non-UI part of a shape node +// +class TreelineShapeNode : public p3dBaseShape +{ +public: + TreelineShapeNode(); + virtual ~TreelineShapeNode(); + + virtual void postConstructor(); + virtual MStatus compute( const MPlug& plug, MDataBlock& datablock ); + virtual MStatus connectionMade ( const MPlug &plug, const MPlug &otherPlug, bool asSrc ); + static void* creator(); + static MStatus initialize(); + virtual bool isBounded() const {return true;} + virtual MBoundingBox boundingBox() const; + + virtual void componentToPlugs( MObject& component, MSelectionList& selectionList ) const; + virtual MPxSurfaceShape::MatchResult + matchComponent( const MSelectionList& item, + const MAttributeSpecArray& spec, + MSelectionList& list ); + virtual bool match( const MSelectionMask& mask, + const MObjectArray& componentList ) const; + virtual void transformUsing( const MMatrix& mat, const MObjectArray& componentList ); + virtual void closestPoint ( const MPoint & toThisPoint, MPoint & theClosestPoint, double tolerance ); + + static void SnapTreeline( MObject& treeline ); + + static void ConvertToGeometry( MObject& obj ); + + static MTypeId id; + static const char* stringId; + +private: + // Attributes + static const char* SHADER_NAME_LONG; + static const char* SHADER_NAME_SHORT; + static MObject sShader; + + static const char* USCALE_NAME_LONG; + static const char* USCALE_NAME_SHORT; + static MObject sUScale; + + static const char* COLOUR_NAME_LONG; + static const char* COLOUR_NAME_SHORT; + static MObject sColour; + + static const char* RED_NAME_LONG; + static const char* RED_NAME_SHORT; + static MObject sRed; + + static const char* GREEN_NAME_LONG; + static const char* GREEN_NAME_SHORT; + static MObject sGreen; + + static const char* BLUE_NAME_LONG; + static const char* BLUE_NAME_SHORT; + static MObject sBlue; + + static const char* ALPHA_NAME_LONG; + static const char* ALPHA_NAME_SHORT; + static MObject sAlpha; + + static const char* HEIGHT_NAME_LONG; + static const char* HEIGHT_NAME_SHORT; + static MObject sHeight; +}; + +///////////////////////////////////////////////////////////////////// +// +// UI class - defines the UI part of a shape node +// +class TreelineShapeNodeUI : public p3dBaseShapeUI +{ +public: + TreelineShapeNodeUI(); + virtual ~TreelineShapeNodeUI(); + + virtual void getDrawRequests( const MDrawInfo & info, bool objectAndActiveOnly, MDrawRequestQueue & requests ); + virtual void draw( const MDrawRequest & request, M3dView & view ) const; + virtual bool select( MSelectInfo &selectInfo, MSelectionList &selectionList, MPointArray &worldSpaceSelectPts ) const; + static void * creator(); + +protected: + void drawQuad(int drawMode) const; + void drawVertices( const MDrawRequest & request, M3dView & view ) const; + bool selectVertices( MSelectInfo &selectInfo, + MSelectionList &selectionList, + MPointArray &worldSpaceSelectPts ) const; +}; + + +} //namespace TETreeLine + + + +#endif //TREELINE_SHAPE_NODE_H + + diff --git a/tools/trackeditor/code/nodes/walllocator.cpp b/tools/trackeditor/code/nodes/walllocator.cpp new file mode 100644 index 0000000..e4d5c4f --- /dev/null +++ b/tools/trackeditor/code/nodes/walllocator.cpp @@ -0,0 +1,551 @@ +#include "precompiled/PCH.h" + +#include "walllocator.h" +#include "main/constants.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include <toollib.hpp> + + +MTypeId WallLocatorNode::id( TEConstants::TypeIDPrefix, TEConstants::NodeIDs::WallLocator ); +const char* WallLocatorNode::stringId = "WallLocatorNode"; + +const int WallLocatorNode::ACTIVE_COLOUR = 13; +const int WallLocatorNode::INACTIVE_COLOUR = 22; +const float WallLocatorNode::SCALE = 1.0f * TEConstants::Scale; + +//This is an attribute. + +const char* WallLocatorNode::LEFTRIGHT_NAME_LONG = "leftRight"; +const char* WallLocatorNode::LEFTRIGHT_NAME_SHORT = "lr"; +MObject WallLocatorNode::mLeftRight; + +const char* WallLocatorNode::PREVNODE_NAME_LONG = "prevNode"; +const char* WallLocatorNode::PREVNODE_NAME_SHORT = "pn"; +MObject WallLocatorNode::mPrevNode; + +const char* WallLocatorNode::NEXTNODE_NAME_LONG = "nextNode"; +const char* WallLocatorNode::NEXTNODE_NAME_SHORT = "nn"; +MObject WallLocatorNode::mNextNode; + +const char* WallLocatorNode::ID_NAME_LONG = "callbackID"; +const char* WallLocatorNode::ID_NAME_SHORT = "cb"; +MObject WallLocatorNode::mCallbackId; + +//============================================================================== +// WallLocatorNode::WallLocatorNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: WallLocatorNode +// +//============================================================================== +WallLocatorNode::WallLocatorNode() {}; + +//============================================================================== +// WallLocatorNode::~WallLocatorNode +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: WallLocatorNode +// +//============================================================================== +WallLocatorNode::~WallLocatorNode() {}; + +//============================================================================== +// WallLocatorNode::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* WallLocatorNode::creator() +{ + return new WallLocatorNode(); +} + +//============================================================================== +// WallLocatorNode::initialize +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================== +MStatus WallLocatorNode::initialize() +{ + MFnMessageAttribute fnMessage; + MFnNumericAttribute fnNumeric; + MStatus status; + + //Create the left/right attrib + mLeftRight = fnNumeric.create( LEFTRIGHT_NAME_LONG, LEFTRIGHT_NAME_SHORT, MFnNumericData::kInt, LEFT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + fnNumeric.setDefault(LEFT); + + RETURN_STATUS_ON_FAILURE( addAttribute( mLeftRight ) ); + + + //Create the sttribute for the previous node. + mPrevNode = fnMessage.create( PREVNODE_NAME_LONG, PREVNODE_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnMessage.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mPrevNode ) ); + + //Create the sttribute for the next node. + mNextNode = fnMessage.create( NEXTNODE_NAME_LONG, NEXTNODE_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( fnMessage.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( fnMessage.setWritable( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mNextNode ) ); + + + mCallbackId = fnNumeric.create( ID_NAME_LONG, ID_NAME_SHORT, MFnNumericData::kLong, 0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + fnNumeric.setDefault( 0 ); + + RETURN_STATUS_ON_FAILURE( addAttribute( mCallbackId ) ); + + return MS::kSuccess; +} + +//============================================================================== +// WallLocatorNode::legalConnection +//============================================================================== +// Description: Comment +// +// Parameters: ( const MPlug & plug, const MPlug & otherPlug, bool asSrc, bool& result ) +// +// Return: MStatus +// +//============================================================================== +MStatus WallLocatorNode::legalConnection ( const MPlug & plug, const MPlug & otherPlug, bool asSrc, bool& result ) const +{ + if ( otherPlug.node() == thisMObject() ) + { + result = false; + return MS::kSuccess; + } + + if ( plug == mNextNode ) + { + //This is the source of the connection. + //Therefore the connection is legal if I'm not already connected to the same node by the input. + MFnDependencyNode fnNode; + MStatus status; + + fnNode.setObject( thisMObject() ); + MPlug prevPlug = fnNode.findPlug( mPrevNode, &status ); + assert( status ); + + if ( prevPlug.node() != otherPlug.node() ) + { + //Go ahead and connect. + result = true; + } + else + { + //Already connected to this node. No 2-Node loops please. + result = false; + } + + return MS::kSuccess; + } + else if ( plug == mPrevNode ) + { + //This is the destination of the connection. + //Therefore the connection is legal if I'm not already connected to the same node by the output + MFnDependencyNode fnNode; + MStatus status; + + fnNode.setObject( thisMObject() ); + MPlug nextPlug = fnNode.findPlug( mNextNode, &status ); + assert( status ); + + if ( nextPlug.node() != otherPlug.node() ) + { + //Go ahead and connect. + result = true; + } + else + { + //Already connected to this node. No 2-Node loops please. + result = false; + } + return MS::kSuccess; + } + + return MS::kUnknownParameter; +} + +//============================================================================== +// WallLocatorNode::postConstructor +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void WallLocatorNode::postConstructor() +{ + // + // Register a callback that will notify us just prior to this node being + // deleted. + // + MStatus status; + MFnDependencyNode fnNode; + + fnNode.setObject( thisMObject() ); + MPlug plug = fnNode.findPlug( mCallbackId, &status ); + assert( status ); + + int id = MNodeMessage::addNodeAboutToDeleteCallback( + thisMObject(), + NodeAboutToDeleteCallback, + (void*)(this), + &status + ); + + plug.setValue( id ); + + //Since this is a planar dealie, we want the Y to stay at 0... + MPlug lyPlug( thisMObject(), localPositionY ); + lyPlug.setLocked( true ); + + MPlug wyPlug( thisMObject(), worldPositionY ); + wyPlug.setLocked( true ); + + assert( status ); +} + +//============================================================================== +// WallLocatorNode::draw +//============================================================================== +// Description: Comment +// +// Parameters: ( M3dView & view, +// const MDagPath & path, +// M3dView::DisplayStyle style, +// M3dView::DisplayStatus status ) +// +// Return: void +// +//============================================================================== +void WallLocatorNode::draw( M3dView & view, + const MDagPath & path, + M3dView::DisplayStyle style, + M3dView::DisplayStatus status ) +{ + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //If there is a connected wall locator node, draw a line to it. Then draw the arrow halfway between them. + if ( MExt::IsConnected( thisMObject(), mNextNode ) ) + { + //Can we stop the GL system from adding this to it's selection mechanism? + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + if ( (value == GL_RENDER) ) + { + //Get the world position of the next node + MStatus st; + MPlugArray pa; + MFnDependencyNode fnNode; + + fnNode.setObject( thisMObject() ); + MPlug plug = fnNode.findPlug( mNextNode, &st ); + assert( st ); + + plug.connectedTo( pa, false, true, &st ); + assert( st ); + + //There is only one thing plugged into this... + MPlug nextPlug = pa[0]; + + //Got the nextNode's plug, let's get the WorldPosition of the other node. + MPoint nnwp; + MExt::GetWorldPosition( &nnwp, nextPlug.node() ); + + //Get the world position of this node. + MPoint wp; + MExt::GetWorldPosition( &wp, thisMObject() ); + + MPoint localPosNN( nnwp - wp ); + MPoint localOrigin; // (0,0,0) + + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + + GLExt::drawLine( localOrigin, localPosNN ); + + + //Draw the LEFT / RIGHT line + MPoint wpMiddleOfLine = MExt::GetWorldPositionBetween( thisMObject(), nextPlug.node() ); + + MVector arrow; + if ( CalculateNormal( nnwp, &arrow ) ) + { + MPoint arrowFrom( wpMiddleOfLine - wp ); + double scale = ( localPosNN.distanceTo(localOrigin) / 6 ); + if ( scale > 5 * TEConstants::Scale ) + { + scale = 5 * TEConstants::Scale; + } + + MPoint arrowTo( ( arrow * scale ) + arrowFrom ); + + GLExt::drawLine( arrowFrom, arrowTo, 5.0f ); + } + } + } + + if ( status == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kDormantColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE ); + + glPopAttrib(); + view.endGL(); +} + +//============================================================================== +// WallLocatorNode::NodeAboutToDeleteCallback +//============================================================================== +// Description: Comment +// +// Parameters: ( MDGModifier& modifier, void* data ) +// +// Return: void +// +//============================================================================== +void WallLocatorNode::NodeAboutToDeleteCallback( MDGModifier& modifier, void* data ) +{ + // + // Get the this pointer for the node being deleted. + // + WallLocatorNode* thisNode = (WallLocatorNode*)(data); + assert( thisNode ); + + // + // Get the MObject corresponding to this node. + // + MObject node = thisNode->thisMObject(); + + //Attach the neighbour nodes to eachother. + MObject nextNode; + MObject prevNode; + + if ( MExt::IsConnected( node, mNextNode ) && MExt::IsConnected( node, mPrevNode )) + { + MStatus status; + MFnDependencyNode fnNode; + fnNode.setObject( node ); + + MPlug plug = fnNode.findPlug( mNextNode, &status ); + + MPlugArray pa; + plug.connectedTo( pa, false, true, &status ); + assert( status ); + + MPlug nextPlug = pa[0]; + + nextNode = nextPlug.node(); + + + fnNode.setObject( node ); + + plug = fnNode.findPlug( mPrevNode, &status ); + + plug.connectedTo( pa, true, false, &status ); + assert( status ); + + MPlug prevPlug = pa[0]; + + prevNode = prevPlug.node(); + + //Remove all connections to this node. + MExt::DisconnectAll( node, mNextNode ); + MExt::DisconnectAll( node, mPrevNode ); + + + //Connect the nodes together... THANKS! + if ( prevNode != nextNode ) + { + MExt::Connect( prevNode, WallLocatorNode::NEXTNODE_NAME_LONG, nextNode, WallLocatorNode::PREVNODE_NAME_LONG ); + } + } + + // + // cancel callback. + // + MStatus status; + MFnDependencyNode fnNode; + fnNode.setObject( node ); + + int id; + MPlug plug = fnNode.findPlug( mCallbackId, &status ); + plug.getValue( id ); + + MMessage::removeCallback( id ); +} + +//============================================================================== +// WallLocatorNode::CalculateNormal +//============================================================================== +// Description: Comment +// +// Parameters: ( MPoint& nextNodeWP, MVector* normal ) +// +// Return: bool +// +//============================================================================== +bool WallLocatorNode::CalculateNormal( MPoint& nextNodeWP, MVector* normal ) +{ + return CalculateNormal( thisMObject(), nextNodeWP, normal ); +} + +//============================================================================== +// WallLocatorNode::CalculateNormal +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& thisNode, MPoint& nextNodeWP, MVector* normal ) +// +// Return: bool +// +//============================================================================== +bool WallLocatorNode::CalculateNormal( MObject& thisNode, MPoint& nextNodeWP, MVector* normal ) +{ + //Get the world position of this node. + MPoint wp; + MExt::GetWorldPosition( &wp, thisNode ); + + MPoint localPosNN( nextNodeWP - wp ); + + MVector nextNode( localPosNN ); + + int isLeft = NONE; + MExt::Attr::Get( &isLeft, thisNode, mLeftRight ); + + if ( isLeft == LEFT ) + { + MVector yUp( 0, -1.0f, 0 ); + *normal = nextNode ^ yUp; //Cross product. + } + else if ( isLeft == RIGHT) + { + MVector yUp( 0, 1.0f, 0 ); + *normal = nextNode ^ yUp; //Cross product. + } + else + { + return false; + } + + normal->normalize(); + return true; +} + +//============================================================================== +// WallLocatorNode::Export +//============================================================================== +// Description: Comment +// +// Parameters: ( MObject& wallLocatorNode, tlHistory& history ) +// +// Return: tlDataChunk +// +//============================================================================== +tlDataChunk* WallLocatorNode::Export( MObject& wallLocatorNode, tlHistory& history ) +{ + MFnDagNode fnNode( wallLocatorNode ); + + if ( fnNode.typeId() == WallLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWallChunk* wall = new tlWallChunk; + + MStatus st; + MPlugArray pa; + MPlug nextPlug = fnNode.findPlug( mNextNode, &st ); + nextPlug.connectedTo( pa, false, true, &st ); + assert( st ); + + //There is only one thing plugged into this... + MPlug nextNodePlug = pa[0]; + MObject nextNode = nextNodePlug.node(); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, wallLocatorNode ); + + MPoint nextPosition; + MExt::GetWorldPosition( &nextPosition, nextNode ); + + MVector normal; + bool hasNormal = CalculateNormal( wallLocatorNode, nextPosition, &normal ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / TEConstants::Scale; + point[1] = thisPosition[1] / TEConstants::Scale; + point[2] = -thisPosition[2] / TEConstants::Scale; //Maya vs. P3D... + wall->SetStart( point ); + + point[0] = nextPosition[0] / TEConstants::Scale; + point[1] = nextPosition[1] / TEConstants::Scale; + point[2] = -nextPosition[2] / TEConstants::Scale; //Maya vs. P3D... + wall->SetEnd( point ); + + if ( hasNormal ) + { + normal.normalize(); + point[0] = normal[0]; + point[1] = normal[1]; + point[2] = -normal[2]; //Maya vs. P3D... + } + else + { + point[0] = 0; + point[1] = 0; + point[2] = 0; + } + wall->SetNormal( point ); + + return wall; + } + + assert( false ); + return NULL; +}
\ No newline at end of file diff --git a/tools/trackeditor/code/nodes/walllocator.h b/tools/trackeditor/code/nodes/walllocator.h new file mode 100644 index 0000000..31d114c --- /dev/null +++ b/tools/trackeditor/code/nodes/walllocator.h @@ -0,0 +1,69 @@ +#include "precompiled/PCH.h" + +#ifndef WALL_LOCATOR +#define WALL_LOCATOR + + +#include "main/constants.h" + +class tlDataChunk; + +class WallLocatorNode : public MPxLocatorNode +{ +public: + WallLocatorNode(); + ~WallLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual MStatus legalConnection ( const MPlug & plug, const MPlug & otherPlug, bool asSrc, bool& result ) const; + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& wallLocatorNode, tlHistory& history ); + static bool CalculateNormal( MObject& thisNode, MPoint& nextNodeWP, MVector* normal ); + + static MTypeId id; + static const char* stringId; + + //Custom to this object. + static const char* LEFTRIGHT_NAME_SHORT; + static const char* LEFTRIGHT_NAME_LONG; + static MObject mLeftRight; + + enum + { + LEFT, + RIGHT, + NONE + }; + + static const char* PREVNODE_NAME_SHORT; + static const char* PREVNODE_NAME_LONG; + static MObject mPrevNode; + + static const char* NEXTNODE_NAME_SHORT; + static const char* NEXTNODE_NAME_LONG; + static MObject mNextNode; + + static const char* ID_NAME_SHORT; + static const char* ID_NAME_LONG; + static MObject mCallbackId; + +private: + + static void NodeAboutToDeleteCallback( MDGModifier& modifier, void* data ); + bool CalculateNormal( MPoint& nextNodeWP, MVector* normal ); + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; +}; + +#endif
\ No newline at end of file diff --git a/tools/trackeditor/code/precompiled/PCH.cpp b/tools/trackeditor/code/precompiled/PCH.cpp new file mode 100644 index 0000000..5f77b4a --- /dev/null +++ b/tools/trackeditor/code/precompiled/PCH.cpp @@ -0,0 +1 @@ +#include "PCH.h"
\ No newline at end of file diff --git a/tools/trackeditor/code/precompiled/PCH.h b/tools/trackeditor/code/precompiled/PCH.h new file mode 100644 index 0000000..f3cc7bf --- /dev/null +++ b/tools/trackeditor/code/precompiled/PCH.h @@ -0,0 +1,68 @@ +#include <maya/M3dView.h> +#include <maya/MAnimControl.h> +#include <maya/MArgList.h> +#include <maya/MAttributeIndex.h> +#include <maya/MAttributeSpec.h> +#include <maya/MAttributeSpecArray.h> +#include <maya/MCursor.h> +#include <maya/MDagPath.h> +#include <maya/MDistance.h> +#include <maya/MDGMessage.h> +#include <maya/MDGModifier.h> +#include <maya/MDoubleArray.h> +#include <maya/MDrawData.h> +#include <maya/MDrawRequest.h> +#include <maya/MEulerRotation.h> +#include <maya/MFnCompoundAttribute.h> +#include <maya/MFnData.h> +#include <maya/MFnDagNode.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnEnumAttribute.h> +#include <maya/MFnIkJoint.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnMatrixData.h> +#include <maya/MFnMesh.h> +#include <maya/MFnMessageAttribute.h> +#include <maya/MFnNumericAttribute.h> +#include <maya/MFnSingleIndexedComponent.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MFnTransform.h> +#include <maya/MFnTypedAttribute.h> +#include <maya/MGlobal.h> +#include <maya/MIntArray.h> +#include <maya/MItDag.h> +#include <maya/MItDependencyNodes.h> +#include <maya/MItMeshVertex.h> +#include <maya/MItSelectionList.h> +#include <maya/MMaterial.h> +#include <maya/MMatrix.h> +#include <maya/MNodeMessage.h> +#include <maya/MObject.h> +#include <maya/MObjectArray.h> +#include <maya/MPlug.h> +#include <maya/MPlugArray.h> +#include <maya/MPoint.h> +#include <maya/MPointArray.h> +#include <maya/MPxCommand.h> +#include <maya/MPxContext.h> +#include <maya/MPxContextCommand.h> +#include <maya/MPxGeometryIterator.h> +#include <maya/MPxLocatorNode.h> +#include <maya/MPxSurfaceShape.h> +#include <maya/MPxSurfaceShapeUI.h> +#include <maya/MQuaternion.h> +#include <maya/MSelectionList.h> +#include <maya/MSelectionMask.h> +#include <maya/MStatus.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +#include <maya/MTransformationMatrix.h> +#include <maya/MTime.h> +#include <maya/MTypeId.h> +#include <maya/MUiMessage.h> +#include <maya/MVector.h> + +#include "toollib.hpp" + +#include <assert.h>
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_BVContext.mel b/tools/trackeditor/code/scripts/te_BVContext.mel new file mode 100644 index 0000000..e835468 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_BVContext.mel @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_BVContext.mel +// +// Description: Defines all the scripts required by the BVContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartBVLoop() +{ + //Start the BV context... + if ( ! `contextInfo -exists BVCtx` ) + { + BVContext BVCtx; + } + + setToolTo BVCtx; +} + +global proc te_MCB_SplitSelectedBV() +{ + //Call the API function. + BVSplitSelected(); +} + +global proc te_Delete_BVContext() +{ + if ( `contextInfo -exists BVCtx` ) + { + deleteUI -toolContext BVCtx; + } +}
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_IntersectionContext.mel b/tools/trackeditor/code/scripts/te_IntersectionContext.mel new file mode 100644 index 0000000..54561ff --- /dev/null +++ b/tools/trackeditor/code/scripts/te_IntersectionContext.mel @@ -0,0 +1,212 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_IntersectionContext.mel +// +// Description: Defines all the scripts required by the IntersectionContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartIntersection() +{ + //Start the Intersection context... + if ( ! `contextInfo -exists IntersectionCtx` ) + { + IntersectionContext IntersectionCtx; + } + + setToolTo IntersectionCtx; +} + +global string $gSelectedIntersection = ""; +global int $gIntersectionSelectionCallbackID = 0; +global string $gSelectedName; +global string $gTypeField; +global string $gIntersectionTypes[] = { "NoStop", "NWay", "FourWay", "NoStopN", "NWayN" }; + +global proc te_MCB_EditIntersection() +{ + global string $gSelectedName; + global int $gIntersectionSelectionCallbackID; + global string $gIntersectionTypes[]; + global string $gTypeField; + + if ( `window -exists TE_InteresctionEditor` ) + { + deleteUI -window TE_IntersectionEditor; + } + + window -rtf true -title "TE Road / Intersection Editor" TE_IntersectionEditor; + + columnLayout -adjustableColumn true; + + $gSelectedName = `textField -editable false -text "" -width 170`; + + $gTypeField = `optionMenu -label "Type" -width 170 -changeCommand ("te_MCB_IntersectionTypeChange( \"#1\" )")`; + + int $index; + int $size = size($gIntersectionTypes); + for ( $index = 0; $index < $size; $index++ ) + { + menuItem -label $gIntersectionTypes[ $index ]; + } + setParent ..; + + button -label "Create Road" -command ( "te_MCB_CreateRoadFromSelected()" ); + button -label "Show Whole Road" -command ( "te_MCB_ShowRoadFromSelected()" ); + button -label "Destroy Road" -command ( "te_MCB_DestroyRoadFromSelected()" ); + button -label "Set Intersection Start" -command ( "te_MCB_AddSelectedIntersectionToRoad( 0 )" ); + button -label "Set Intersection End" -command ( "te_MCB_AddSelectedIntersectionToRoad( 1 )" ); + separator; + button -label "Create Intersections" -command "te_MCB_StartIntersection()"; + + setParent ..; + + showWindow; + + //Create the selection change callback. + $gIntersectionSelectionCallbackID = `scriptJob -parent "TE_IntersectionEditor" -event "SelectionChanged" "te_UpdateIntersectionEditor()"`; + +} + +global proc te_MCB_IntersectionTypeChange( string $value ) +{ + global string $gSelectedIntersection; + + if ( $gSelectedIntersection != "" ) + { + setAttr ( $gSelectedIntersection + ".IntersectionType" ) -type "string" $value; + } +} + +global proc te_CloseIntersectionEditorWindow() +{ + global int $gIntersectionSelectionCallbackID; + + if ( `window -exists TE_InteresctionEditor` ) + { + deleteUI -window TE_IntersectionEditor; + } + + $gIntersectionSelectionCallbackID = 0; +} + +global proc te_UpdateIntersectionEditor() +{ + global string $gSelectedIntersection; + global string $gSelectedName; + global string $gTypeField; + global string $gIntersectionTypes[]; + + string $selectedObjects[] = `ls -sl -dag`; + string $selectedObjectName = $selectedObjects[0]; + string $selectedNodeType; + + if ( $selectedObjectName != "" ) + { + //There is something selected + + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "transform" ) + { + //We don't want the transform, we want the child node. + string $children[] = `listRelatives -c $selectedObjectName`; + $selectedObjectName = $children[0]; + } + + if ( $selectedObjectName != "" ) + { + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "IntersectionLocatorNode" ) + { + //We're in business + textField -edit -text $selectedObjectName $gSelectedName; + + string $value = `getAttr ( $selectedObjectName + ".IntersectionType" )`; + + //Which index is this string? + int $size = size( $gIntersectionTypes ); + int $index; + + for ( $index = 0; $index < $size; $index++ ) + { + if ( $gIntersectionTypes[ $index ] == $value ) + { + optionMenu -edit -sl ($index + 1) $gTypeField; + break; + } + } + + if ( $index == $size ) + { + //This node had no proper setting. Resetting it. + warning "Node had invalid type setting. Correcting to default type"; + + optionMenu -edit -sl 1 $gTypeField; + setAttr ( $selectedObjectName + ".IntersectionType" ) -type "string" $gIntersectionTypes[ 0 ]; + } + + $gSelectedIntersection = $selectedObjectName; + return; + } + else if ( $selectedNodeType == "mesh" ) + { + //This is for adding road to the selected intersection. Do not unselect the intersection. + string $whichRoad[] = `listAttr -st teWhichRoad $selectedObjectName`; + + if ( size( $whichRoad ) ) + { + return; + } + } + } + } + + textField -edit -text "" $gSelectedName; + $gSelectedIntersection = ""; + +} + + + +global proc te_MCB_CreateRoadFromSelected() +{ + TE_CreateRoad(); +} + +global proc te_MCB_ShowRoadFromSelected() +{ + TE_ShowRoad(); +} + +global proc te_MCB_DestroyRoadFromSelected() +{ + TE_DestroyRoad(); +} + +global proc te_MCB_AddSelectedIntersectionToRoad( int $isEnd ) +{ + global string $gSelectedIntersection; + + TE_AddIntersectionToRoad( $gSelectedIntersection, $isEnd ); +} + +global proc te_Delete_IntersectionContext() +{ + if ( `contextInfo -exists IntersectionCtx` ) + { + deleteUI -toolContext IntersectionCtx; + } +}
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_PPContext.mel b/tools/trackeditor/code/scripts/te_PPContext.mel new file mode 100644 index 0000000..a8cc63f --- /dev/null +++ b/tools/trackeditor/code/scripts/te_PPContext.mel @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_PPContext.mel +// +// Description: Defines all the scripts required by the PPContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the bv context tool. + +global proc te_MCB_StartPPLoop() +{ + //Start the PP context... + if ( ! `contextInfo -exists PPCtx` ) + { + PPContext PPCtx; + } + + setToolTo PPCtx; +} + +global proc te_MCB_SplitSelectedPP() +{ + //Call the API function. + PPSplitSelected(); +} + +global proc te_Delete_PPContext() +{ + if ( `contextInfo -exists PPCtx` ) + { + deleteUI -toolContext PPCtx; + } +}
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_cleanup.mel b/tools/trackeditor/code/scripts/te_cleanup.mel new file mode 100644 index 0000000..21f39d3 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_cleanup.mel @@ -0,0 +1,12 @@ +te_Delete_TreeLineContext(); +te_Delete_BVContext(); +te_Delete_PPContext(); +te_Delete_IntersectionContext(); +te_CloseIntersectionEditorWindow(); + +if ( `menu -exists te_MainMenu` ) +{ + deleteUI te_MainMenu; + + flushUndo; +} diff --git a/tools/trackeditor/code/scripts/te_editorwindow.mel b/tools/trackeditor/code/scripts/te_editorwindow.mel new file mode 100644 index 0000000..1504a52 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_editorwindow.mel @@ -0,0 +1,335 @@ +//Constant +global int $gMAX_LANES = 4; + +global string $gSelectedName; +global string $gOriginField; +global string $gRoadField; +global string $gTopField; +global string $gBottomField; +global string $gLanesField; +global string $gShoulderField; + +global int $gSelectionScriptJob; + +global string $gSelectedObjectName; + +global proc teOpenEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gLanesField; + global string $gShoulderField; + global int $gMAX_LANES; + + + if ( `window -exists TE_TileEditor` ) + { + deleteUI -window TE_TileEditor; + } + + window -rtf true -title "TE Tile Editor" TE_TileEditor; + + columnLayout -adjustableColumn true; + + string $selectedRow = `rowLayout -numberOfColumns 3 -columnWidth 1 170`; + $gSelectedName = `textField -editable false -text "" -width 170`; + string $selectedButton = `button -label "Select Mesh" -command ("teSelectMesh()")`; + string $doneButton = `button -label "Done" -command ("teDoneEditingMesh()")`; + + setParent ..; + + string $originRow = `rowLayout -numberOfColumns 2`; + string $originButton = `button -label "Set Origin" -command ("teSelectOrigin()")`; + $gOriginField = `intField -value -1 -editable false`; + setParent ..; + + + string $roadRow = `rowLayout -numberOfColumns 2`; + string $roadButton = `button -label "Set Road Dir" -command ("teSelectRoadDir()")`; + $gRoadField = `intField -value -1 -editable false`; + setParent ..; + + + string $topRow = `rowLayout -numberOfColumns 2`; + string $topButton = `button -label "Set TOP" -command ("teSelectTOP()")`; + $gTopField = `intField -value -1 -editable false`; + setParent ..; + + + string $bottomRow = `rowLayout -numberOfColumns 2`; + string $bottomButton = `button -label "Set BOTTOM" -command ("teSelectBOTTOM()")`; + $gBottomField = `intField -value -1 -editable false`; + setParent ..; + + //The following #1 is a trick that the scripting system converts into the value of the field/control... + string $laneRow = `rowLayout -numberOfColumns 2`; + string $laneLabel = `text -label "Num. Lanes" -align "center"`; + $gLanesField = `intField -value 1 -min 0 -max $gMAX_LANES -step 1 -editable true -changeCommand ("teSetNumLanes(#1)")`; + setParent ..; + + $gShoulderField = `checkBox -label "Has Shoulder" -value true -changeCommand ("teSetShoulder(#1)")`; + + setParent ..; //columnLayout + + showWindow; +} + +global proc teCloseEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gLanesField; + global string $gShoulderField; + + global int $gSelectionScriptJob; + + if ( `window -exists TE_TileEditor` ) + { + deleteUI -window TE_TileEditor; + } + + $gSelectedName = ""; + $gOriginField = ""; + $gRoadField = ""; + $gTopField = ""; + $gBottomField = ""; + $gLanesField = ""; + $gShoulderField = ""; + + $gSelectionScriptJob = 0; +} + +global proc teSelectMesh() +{ + global string $gSelectedName; + global int $gSelectionScriptJob; + global string $gSelectedObjectName; + + //May want to inform the TrackEditor of this selection if it is good. + string $selectedObjects[] = `ls -sl -dag`; + string $selectedObjectName = $selectedObjects[0]; + string $selectedNodeType; + + if ( $selectedObjectName != "" ) + { + //There is something selected + + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "transform" ) + { + //We don't want the transform, we want the child node. + $selectedObjectName = $selectedObjects[1]; + } + + if ( $selectedObjectName != "" ) + { + $selectedNodeType = `nodeType $selectedObjectName `; + + if ( $selectedNodeType == "mesh" ) + { + //We're in business + textField -edit -text $selectedObjectName $gSelectedName; + + teSwitchToVertexSelection( 1 ); //Turn on vertex selection. + + teAddSettingsToObject( $selectedObjectName ); + + $gSelectedObjectName = $selectedObjectName; + + teUpdateEditorWindow(); + } + } + } +} + +global proc teUpdateEditorWindow() +{ + global string $gSelectedName; + global string $gOriginField; + global string $gRoadField; + global string $gTopField; + global string $gBottomField; + global string $gSelectedObjectName; + global string $gLanesField; + global string $gShoulderField; + + //Update the fields according to the selected object. + + int $valsSet = false; + + if ( $gSelectedObjectName != "" ) + { + string $attr[] = `listAttr -st teOrigin $gSelectedObjectName`; + + if ( $attr[0] != "" ) + { + textField -edit -text $gSelectedObjectName $gSelectedName; + + float $origin = `getAttr ($gSelectedObjectName + ".teOrigin")`; + intField -edit -value $origin $gOriginField; + + float $road = `getAttr ($gSelectedObjectName + ".teRoad")`; + intField -edit -value $road $gRoadField; + + float $top = `getAttr ($gSelectedObjectName + ".teTop")`; + intField -edit -value $top $gTopField; + + float $bottom = `getAttr ($gSelectedObjectName + ".teBottom")`; + intField -edit -value $bottom $gBottomField; + + int $lanes = `getAttr ($gSelectedObjectName + ".teLanes")`; + intField -edit -value $lanes $gLanesField; + + int $hasShoulder = `getAttr ($gSelectedObjectName + ".teShoulder")`; + checkBox -edit -value $hasShoulder $gShoulderField; + + $valsSet = 1; + } + } + + if ( !$valsSet ) + { + textField -edit -text "" $gSelectedName; + + intField -edit -value -1 $gOriginField; + intField -edit -value -1 $gRoadField; + intField -edit -value -1 $gTopField; + intField -edit -value -1 $gBottomField; + intField -edit -value 0 $gLanesField; + checkBox -edit -value false $gShoulderField; + } +} + +global proc teSwitchToVertexSelection( int $on ) +{ + if ( $on ) + { + selectMode -component; + selectType -vertex true; + } + else + { + selectMode -object; + } +} + +global proc teDoneEditingMesh() +{ + global string $gSelectedObjectName; + + $gSelectedObjectName = ""; //Clear the selection. + + teSwitchToVertexSelection( 0 ); //Turn on vertex selection. + + teUpdateEditorWindow(); +} + +global proc teAddSettingsToObject( string $objectName ) +{ + string $attr[] = `listAttr -st teOrigin $objectName`; + + if ( $attr[0] == "" ) + { + addAttr -ln teOrigin -sn teO -at long -defaultValue -1 $objectName; + + addAttr -ln teRoad -sn teR -at long -defaultValue -1 $objectName; + + addAttr -ln teTop -sn teT -at long -defaultValue -1 $objectName; + + addAttr -ln teBottom -sn teB -at long -defaultValue -1 $objectName; + + addAttr -ln teLanes -sn teL -at long -defaultValue 1 $objectName; + + addAttr -ln teShoulder -sn teS -at bool -defaultValue true $objectName; + + //This is for connecting to roads + addAttr -ln teWhichRoad -sn teWR -at message $objectName; + + //This is a hint of the type + addAttr -ln teTypeHint -sn teTH -at long -defaultValue -1 $objectName; + } +} + +global proc teSelectOrigin() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teOrigin" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectRoadDir() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teRoad" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectTOP() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teTop" ) $pos; + } + + teUpdateEditorWindow(); +} + +global proc teSelectBOTTOM() +{ + global string $gSelectedObjectName; + + int $pos = `TE_GetSelectedVertexIndex`; + + if ( $pos >= 0 ) + { + setAttr ( $gSelectedObjectName + ".teBottom" ) $pos; + } + + teUpdateEditorWindow(); +} + + +global proc teSetNumLanes( int $numLanes ) +{ + global string $gSelectedObjectName; + + if ( $gSelectedObjectName != "" ) + { + setAttr ( $gSelectedObjectName + ".teLanes" ) $numLanes; + } +} + +global proc teSetShoulder( int $hasShoulder ) +{ + global string $gSelectedObjectName; + + if ( $gSelectedObjectName != "" ) + { + setAttr ( $gSelectedObjectName + ".teShoulder" ) $hasShoulder; + } +}
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_globals.mel b/tools/trackeditor/code/scripts/te_globals.mel new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_globals.mel @@ -0,0 +1 @@ + diff --git a/tools/trackeditor/code/scripts/te_main.mel b/tools/trackeditor/code/scripts/te_main.mel new file mode 100644 index 0000000..6a97582 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_main.mel @@ -0,0 +1,195 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// TE_main.mel +// +// Description: Installs the Terrain Editor (TE) interface. +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created Apr 11, 2001 -- bkusy +// + Stolen & Adapted -- CBrisebois +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// t e _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// t e _ M C B _ A b o u t +// +// Synopsis: Display an About Terrain Editor window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_MCB_About() +{ +// string $pluginVersion = `te_GetVersion`; + + string $pluginVersion = "2.0"; + + string $message = ( "\nSimpsons Road Rage Terrain Editor.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About Terrain Editor" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// t e _ d o M a i n M e n u I t e m s +// +// Synopsis: Creates the TE menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_doMainMenuItems( string $menu ) +{ + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Bounding Fences" -sm true; + + menuItem -label "Create fence line" -command "te_MCB_StartBVLoop()"; + + menuItem -label "Split Fence(s)" -command "te_MCB_SplitSelectedBV()"; + + setParent -menu ..; + + menuItem -label "Pedestrian Paths" -sm true; + + menuItem -label "Create path line" -command "te_MCB_StartPPLoop()"; + + menuItem -label "Split Path(s)" -command "te_MCB_SplitSelectedPP()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Track Editor" -sm true; + + radioMenuItemCollection; + + menuItem -label "Off" -radioButton on -command "TE_StateChange(0)"; + + menuItem -label "Edit Mode" -radioButton off -command "TE_StateChange(1)"; + + menuItem -label "Display Mode" -radioButton off -command "TE_StateChange(2)"; + + menuItem -divider true; + + menuItem -label "Create Intersections" -command "te_MCB_StartIntersection()"; + + menuItem -label "Edit Roads / Intersections" -command "te_MCB_EditIntersection()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Tree Line Tool" -allowOptionBoxes true -sm true; + + menuItem -label "Create Tree Lines" -command "te_MCB_CreateTreeLines()"; + + menuItem -label "Options" -optionBox true -command "te_MCB_TreelineOptions()"; + + menuItem -divider true; + + menuItem -label "Snap Selected Treelines" -command "te_MCB_SnapTreelines()"; + + menuItem -divider true; + + menuItem -label "Convert Treelines to Geometry" -command "te_MCB_ConvertToGeometry()"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Export" -command "te_MCB_Export()"; + + menuItem -optionBox true -command "TE_ExportOptions()"; + + menuItem -divider true; + + menuItem -label "About" -command "te_MCB_About()"; + + setParent -m ..; +} + +//----------------------------------------------------------------------------- +// t e _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc te_InstallUI() +{ + + global string $gMainWindow; + + // + // Install TE menu as a root menu. + // + if ( `menu -exists te_MainMenu` ) deleteUI te_MainMenu; + menu -label "Track Editor" -allowOptionBoxes true -parent $gMainWindow te_MainMenu; + + te_doMainMenuItems "te_MainMenu"; +} + +global proc te_MCB_Export() +{ + $whichCtx = `currentCtx`; + + if ( $whichCtx != "" ) + { + ctxCompletion; + } + + TE_Export(); +} + +source "te_globals.mel"; +source "te_setup.mel"; +source "te_BVContext.mel"; +source "te_PPContext.mel"; +source "te_treelineContext.mel"; +source "te_IntersectionContext.mel"; +source "te_editorWindow.mel"; +source "AETEShowRoadSegButton.mel"; + +evalDeferred "te_InstallUI";
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_setup.mel b/tools/trackeditor/code/scripts/te_setup.mel new file mode 100644 index 0000000..d5ca442 --- /dev/null +++ b/tools/trackeditor/code/scripts/te_setup.mel @@ -0,0 +1,15 @@ +//Create the TrackEditorNode. + + +global proc te_Create_TrackEditorNode() +{ + if ( !(`objExists TrackEditorNode`) ) + { + createNode "transform" -n "TrackEditorNode"; + createNode "transform" -n "Fences" -p "TrackEditorNode"; + createNode "transform" -n "Roads" -p "TrackEditorNode"; + createNode "transform" -n "Intersections" -p "TrackEditorNode"; + createNode "transform" -n "Treelines" -p "TrackEditorNode"; + createNode "transform" -n "PedPaths" -p "TrackEditorNode"; + } +}
\ No newline at end of file diff --git a/tools/trackeditor/code/scripts/te_treelineContext.mel b/tools/trackeditor/code/scripts/te_treelineContext.mel new file mode 100644 index 0000000..c8120ab --- /dev/null +++ b/tools/trackeditor/code/scripts/te_treelineContext.mel @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// te_treelineContext.mel +// +// Description: Defines all the scripts required by the TreeLineContext tool +// As a convention all Terrain Editor global procedures +// and global variables are prefixed with "te_". All commands +// exposed through TE plugins are prefixed with "TE_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created -- CBrisebois +//----------------------------------------------------------------------------- + +//This is the global instance of the tree line context tool. + +global proc te_MCB_CreateTreeLines() +{ + //Start the tree line context... + if ( ! `contextInfo -exists TreeLineCtx` ) + { + TreeLineContext TreeLineCtx; + } + + setToolTo TreeLineCtx; +} + +global proc te_Delete_TreeLineContext() +{ + if ( `contextInfo -exists TreeLineCtx` ) + { + deleteUI -toolContext TreeLineCtx; + } +} + +global proc te_MCB_SnapTreelines() +{ + TE_SnapSelectedTreelines(); +} + +global proc te_MCB_ConvertToGeometry() +{ + string $whichCtx = `currentCtx`; + + if ( $whichCtx == "TreeLineCtx" ) + { + ctxAbort; + } + + TE_ConvertTreelineToGeometry(); +} + +global int $gDeleteTreelines = true; + +global proc te_MCB_TreelineOptions() +{ + global int $gDeleteTreelines; + + if ( `window -exists TE_TreelineOptions` ) + { + deleteUI -window TE_TreelineOptions; + } + + window -rtf true -title "TE Treeline Options" TE_TreelineOptions; + + columnLayout -adjustableColumn true; + + checkBox -label "Delete Treelines" -value $gDeleteTreelines -cc "te_BCB_SetDeleteTreelines(#1)"; + + setParent ..; + + showWindow; +} + +global proc te_BCB_SetDeleteTreelines( int $delete ) +{ + global int $gDeleteTreelines; + + $gDeleteTreelines = $delete; + TE_SetDeleteTreeline($delete); +} diff --git a/tools/worldbuilder/build/Debug/worldbuilder.log b/tools/worldbuilder/build/Debug/worldbuilder.log new file mode 100644 index 0000000..c02224f --- /dev/null +++ b/tools/worldbuilder/build/Debug/worldbuilder.log @@ -0,0 +1,8 @@ +Build started 11/7/2015 5:44:31 PM. + 1>Project "G:\Code\Simpsons Hit&Run\tools\worldbuilder\build\worldbuilder.vcxproj" on node 3 (Build target(s)). + 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(369,5): error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. + 1>Done Building Project "G:\Code\Simpsons Hit&Run\tools\worldbuilder\build\worldbuilder.vcxproj" (Build target(s)) -- FAILED. + +Build FAILED. + +Time Elapsed 00:00:00.05 diff --git a/tools/worldbuilder/build/worldbuilder.dsp b/tools/worldbuilder/build/worldbuilder.dsp new file mode 100644 index 0000000..bdfb38a --- /dev/null +++ b/tools/worldbuilder/build/worldbuilder.dsp @@ -0,0 +1,1739 @@ +# Microsoft Developer Studio Project File - Name="worldbuilder" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 60000 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=worldbuilder - Win32 Tools Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "worldbuilder.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "worldbuilder.mak" CFG="worldbuilder - Win32 Tools Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "worldbuilder - Win32 Tools Debug" (based on "Win32 (x86) Application") +!MESSAGE "worldbuilder - Win32 Tools Release" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "worldbuilder" +# PROP Scc_LocalPath "." +CPP=snCl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "worldbuilder___Win32_Tools_Debug" +# PROP BASE Intermediate_Dir "worldbuilder___Win32_Tools_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "C:\AW\Maya4.0\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /YX"precompiled\\" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /GR /GX /ZI /Od /I "..\..\..\game\libs" /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /I "..\..\..\game\libs\pure3d\\" /I "..\..\..\game\libs\radcore\inc" /I "..\..\..\game\code\constants" /I "..\..\..\game\code" /I "..\..\..\game\libs\radcontent\inc" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_PC" /D "RAD_WIN32" /D "RAD_DEBUG" /D "WORLD_BUILDER" /FR /YX"precompiled\PCH.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "_DEBUG" /d "_AFXDLL" +BSC32=snBsc.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\myCmd.mll" /pdbtype:sept /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 dxguid.lib user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib WS2_32.LIB /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\worldbuilder.mll" /pdbtype:sept /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /libpath:"..\..\..\game\libs\pure3d\sdks\dx8\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy worldbuilder.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Debug\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderd.mll copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +# End Special Build Tool + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "worldbuilder___Win32_Tools_Release" +# PROP BASE Intermediate_Dir "worldbuilder___Win32_Tools_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "." /I "C:\AW\Maya4.0\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /I "..\..\..\game\libs" /I "..\..\..\game\libs\pure3d\sdks\Maya4_0\include\\" /I "..\code\\" /I "..\..\..\game\libs\pure3d\toollib\inc" /I "..\..\..\game\libs\pure3d\toollib\chunks16\inc" /I "." /I "..\..\..\game\libs\pure3d\constants" /I "..\..\globalcode" /I "..\..\..\game\libs\radmath" /I "..\..\..\game\libs\pure3d\\" /I "..\..\..\game\libs\radcore\inc" /I "..\..\..\game\code\constants" /I "..\..\..\game\code" /I "..\..\..\game\libs\radcontent\inc" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "NT_PLUGIN" /D "RAD_PC" /D "RAD_WIN32" /D "RAD_RELEASE" /D "WORLD_BUILDER" /FAs /YX"precompiled\PCH.h" /FD /c +# SUBTRACT CPP /Fr +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x1009 /d "NDEBUG" /d "_AFXDLL" +BSC32=snBsc.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=snLink.exe +# ADD BASE LINK32 Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release\myCmd.mll" /libpath:"C:\AW\Maya4.0\lib" /export:initializePlugin /export:uninitializePlugin +# ADD LINK32 dxguid.lib user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib WS2_32.LIB /nologo /subsystem:windows /dll /machine:I386 /out:"Release\worldbuilder.mll" /libpath:"..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" /libpath:"..\..\..\game\libs\pure3d\sdks\dx8\lib" /export:initializePlugin /export:uninitializePlugin +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Desc=Copy worldbuilder.mll to Distribution and Maya dir. +PostBuild_Cmds=copy .\Release\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderr.mll copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "worldbuilder - Win32 Tools Debug" +# Name "worldbuilder - Win32 Tools Release" +# Begin Group "main" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\main\constants.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\main\pluginMain.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\toolhack.h +# End Source File +# Begin Source File + +SOURCE=..\code\main\worldbuilder.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\main\worldbuilder.h +# End Source File +# End Group +# Begin Group "commands" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\commands\export.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\commands\export.h +# End Source File +# Begin Source File + +SOURCE=..\code\commands\worldbuildercommands.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\commands\worldbuildercommands.h +# End Source File +# End Group +# Begin Group "nodes" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\nodes\actioneventlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\actioneventlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\breakablecameralocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\breakablecameralocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\carstartlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\carstartlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\directionallocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\directionallocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\eventlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\eventlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\fovlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\fovlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\genericlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\genericlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\interiorentrancelocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\interiorentrancelocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\occlusionlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\occlusionlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\pedgrouplocator.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\pedgrouplocator.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\railcamlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\railcamlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\scriptlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\scriptlocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\splinelocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\splinelocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\staticcameralocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\staticcameralocatornode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\triggertypes.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\triggervolumenode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\triggervolumenode.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\wbspline.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\wbspline.h +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\zoneeventlocatornode.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\nodes\zoneeventlocatornode.h +# End Source File +# End Group +# Begin Group "contexts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\contexts\locatorcontext.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\locatorcontext.h +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\triggercontext.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\contexts\triggercontext.h +# End Source File +# End Group +# Begin Group "utility" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\globalcode\utility\GLExt.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\GLExt.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\mayahandles.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MExt_template.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\MUI.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\nodehelper.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\stdafx.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\transformmatrix.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\transformmatrix.h +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.c +# End Source File +# Begin Source File + +SOURCE=..\..\globalcode\utility\util.h +# End Source File +# End Group +# Begin Group "mel scripts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\scripts\wb_cleanup.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_cleanup.mel +InputName=wb_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_cleanup.mel +InputName=wb_cleanup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\wb_coinsplines.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_coinsplines.mel +InputName=wb_coinsplines + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_coinsplines.mel +InputName=wb_coinsplines + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\wb_locator.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_locator.mel +InputName=wb_locator + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_locator.mel +InputName=wb_locator + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\wb_main.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_main.mel +InputName=wb_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_main.mel +InputName=wb_main + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\wb_setup.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_setup.mel +InputName=wb_setup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_setup.mel +InputName=wb_setup + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\scripts\wb_splines.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_splines.mel +InputName=wb_splines + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) +InputPath=..\code\scripts\wb_splines.mel +InputName=wb_splines + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\others\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "precompiled header" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\precompiled\PCH.cpp +# ADD BASE CPP /Yc"PCH.h" +# ADD CPP /Yc"PCH.h" +# End Source File +# Begin Source File + +SOURCE=..\code\precompiled\PCH.h +# End Source File +# End Group +# Begin Group "resources" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\resources\resource.h +# End Source File +# Begin Source File + +SOURCE=..\code\resources\resource.rc +# End Source File +# End Group +# Begin Group "AETemplates" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel +InputName=AEActionEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel +InputName=AEActionEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel +InputName=AEBreakableCameraLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel +InputName=AEBreakableCameraLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AECarStartLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AECarStartLocatorNodeTemplate.mel +InputName=AECarStartLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AECarStartLocatorNodeTemplate.mel +InputName=AECarStartLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel +InputName=AEDirectionalLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel +InputName=AEDirectionalLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEEventLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEEventLocatorNodeTemplate.mel +InputName=AEEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEEventLocatorNodeTemplate.mel +InputName=AEEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEFOVLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEFOVLocatorNodeTemplate.mel +InputName=AEFOVLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEFOVLocatorNodeTemplate.mel +InputName=AEFOVLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEGenericLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEGenericLocatorNodeTemplate.mel +InputName=AEGenericLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEGenericLocatorNodeTemplate.mel +InputName=AEGenericLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel +InputName=AEInteriorEntranceLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel +InputName=AEInteriorEntranceLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel +InputName=AEOcclusionLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel +InputName=AEOcclusionLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEPedGroupLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEPedGroupLocatorNodeTemplate.mel +InputName=AEPedGroupLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEPedGroupLocatorNodeTemplate.mel +InputName=AEPedGroupLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AERailCamLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AERailCamLocatorNodeTemplate.mel +InputName=AERailCamLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AERailCamLocatorNodeTemplate.mel +InputName=AERailCamLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEScriptLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEScriptLocatorNodeTemplate.mel +InputName=AEScriptLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEScriptLocatorNodeTemplate.mel +InputName=AEScriptLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AESplineLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AESplineLocatorNodeTemplate.mel +InputName=AESplineLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AESplineLocatorNodeTemplate.mel +InputName=AESplineLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel +InputName=AEStaticCameraLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel +InputName=AEStaticCameraLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AETriggerVolumeNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETriggerVolumeNodeTemplate.mel +InputName=AETriggerVolumeNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AETriggerVolumeNodeTemplate.mel +InputName=AETriggerVolumeNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEWBLocatorSuppress.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBLocatorSuppress.mel +InputName=AEWBLocatorSuppress + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBLocatorSuppress.mel +InputName=AEWBLocatorSuppress + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEWBSelectTarget.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBSelectTarget.mel +InputName=AEWBSelectTarget + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBSelectTarget.mel +InputName=AEWBSelectTarget + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEWBTriggerButton.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBTriggerButton.mel +InputName=AEWBTriggerButton + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEWBTriggerButton.mel +InputName=AEWBTriggerButton + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel + +!IF "$(CFG)" == "worldbuilder - Win32 Tools Debug" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel +InputName=AEZoneEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ELSEIF "$(CFG)" == "worldbuilder - Win32 Tools Release" + +# Begin Custom Build - Copy $(InputPath) to Maya (dist and install) Templates +InputPath=..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel +InputName=AEZoneEventLocatorNodeTemplate + +BuildCmds= \ + copy $(InputPath) C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel \ + copy $(InputPath) ..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel \ + + +"C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) + +"..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(BuildCmds) +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# Begin Group "SuperCam" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\game\code\camera\icamerashaker.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\isupercamtarget.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\railcam.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\railcam.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\sinecosshaker.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\sinecosshaker.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\staticcam.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\staticcam.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\supercam.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\supercam.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\supercamcontroller.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\camera\supercamcontroller.h +# End Source File +# End Group +# Begin Group "TriggerVolumes" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\game\code\meta\locator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\locator.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\recttriggervolume.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\recttriggervolume.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\spheretriggervolume.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\spheretriggervolume.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\triggerlocator.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\triggervolume.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\triggervolume.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\triggervolumetracker.h +# End Source File +# End Group +# Begin Group "game engine" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\code\gameengine\gameengine.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\gameengine\gameengine.h +# End Source File +# Begin Source File + +SOURCE=..\code\gameengine\mayacamera.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\gameengine\mayacamera.h +# End Source File +# Begin Source File + +SOURCE=..\code\gameengine\wbcamtarget.cpp +# End Source File +# Begin Source File + +SOURCE=..\code\gameengine\wbcamtarget.h +# End Source File +# End Group +# Begin Group "from game" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\game\code\ai\actionnames.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\button.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\button.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\worldsim\character\charactercontroller.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\main\commandlineoptions.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\controller.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\gamedata.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\gamedatamanager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\gamedatamanager.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\render\DSG\IEntityDSG.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\render\DSG\IEntityDSG.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\inputmanager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\inputmanager.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\locatorevents.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\meta\locatortypes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\mappable.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\mappable.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\mapper.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\mapper.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\memcard\memorycardmanager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\memcard\memorycardmanager.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\rumbleeffect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\rumbleeffect.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\rumblexbox.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\savegameinfo.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\data\savegameinfo.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\usercontroller.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\usercontroller.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\game\code\input\virtualinputs.cpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\code\resources\icon1.ico +# End Source File +# End Target +# End Project diff --git a/tools/worldbuilder/build/worldbuilder.vcproj b/tools/worldbuilder/build/worldbuilder.vcproj new file mode 100644 index 0000000..f4119ba --- /dev/null +++ b/tools/worldbuilder/build/worldbuilder.vcproj @@ -0,0 +1,1010 @@ +<?xml version="1.0" encoding = "Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.00" + Name="worldbuilder" + SccProjectName="Perforce Project" + SccAuxPath="" + SccLocalPath="." + SccProvider="MSSCCI:Perforce SCM" + Keyword="MFCProj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Tools Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\include\,..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath,..\..\..\game\libs\pure3d\,..\..\..\game\libs\radcore\inc,..\..\..\game\code\constants,..\..\..\game\code,..\..\..\game\libs\radcontent\inc" + PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_PC;RAD_WIN32;RAD_RELEASE;WORLD_BUILDER" + StringPooling="TRUE" + RuntimeLibrary="2" + EnableFunctionLevelLinking="TRUE" + RuntimeTypeInfo="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="precompiled\PCH.h" + PrecompiledHeaderFile=".\Release/worldbuilder.pch" + AssemblerOutput="4" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="3" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib WS2_32.LIB" + OutputFile="Release\worldbuilder.mll" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + IgnoreDefaultLibraryNames="LIBC.lib;LIBCMT.lib;LIBCPMT.lib" + ProgramDatabaseFile=".\Release/worldbuilder.pdb" + SubSystem="2" + ImportLibrary=".\Release/worldbuilder.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/worldbuilder.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy worldbuilder.mll to Distribution and Maya dir." + CommandLine="copy .\Release\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll +copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderr.mll +copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;NDEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + <Configuration + Name="Tools Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="2" + UseOfMFC="2" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\include\,..\code\,..\..\..\game\libs\pure3d\toollib\inc,..\..\..\game\libs\pure3d\toollib\chunks16\inc,.,..\..\..\game\libs\pure3d\constants,..\..\globalcode,..\..\..\game\libs\radmath,..\..\..\game\libs\pure3d\,..\..\..\game\libs\radcore\inc,..\..\..\game\code\constants,..\..\..\game\code,..\..\..\game\libs\radcontent\inc" + PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_PC;RAD_WIN32;RAD_DEBUG;WORLD_BUILDER" + BasicRuntimeChecks="3" + RuntimeLibrary="3" + RuntimeTypeInfo="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderThrough="precompiled\PCH.h" + PrecompiledHeaderFile=".\Debug/worldbuilder.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + BrowseInformation="1" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalOptions="/MACHINE:I386" + AdditionalDependencies="user32.lib gdi32.lib glu32.lib version.lib Foundation.lib OpenGL32.lib OpenMaya.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib OpenMayaAnim.lib WS2_32.LIB" + OutputFile="Debug\worldbuilder.mll" + LinkIncremental="2" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="..\..\..\game\libs\pure3d\sdks\Maya4_0\lib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/worldbuilder.pdb" + SubSystem="2" + ImportLibrary=".\Debug/worldbuilder.lib"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/worldbuilder.tlb"/> + <Tool + Name="VCPostBuildEventTool" + Description="Copy worldbuilder.mll to Distribution and Maya dir." + CommandLine="copy .\Debug\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll +copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderd.mll +copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_AFXDLL;_DEBUG" + Culture="4105"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + </Configuration> + </Configurations> + <Files> + <Filter + Name="main" + Filter=""> + <File + RelativePath="..\code\main\constants.h"> + </File> + <File + RelativePath="..\code\main\pluginMain.cpp"> + </File> + <File + RelativePath="..\code\main\pluginMain.h"> + </File> + <File + RelativePath="..\code\main\toolhack.h"> + </File> + <File + RelativePath="..\code\main\worldbuilder.cpp"> + </File> + <File + RelativePath="..\code\main\worldbuilder.h"> + </File> + </Filter> + <Filter + Name="commands" + Filter=""> + <File + RelativePath="..\code\commands\export.cpp"> + </File> + <File + RelativePath="..\code\commands\export.h"> + </File> + <File + RelativePath="..\code\commands\worldbuildercommands.cpp"> + </File> + <File + RelativePath="..\code\commands\worldbuildercommands.h"> + </File> + </Filter> + <Filter + Name="nodes" + Filter=""> + <File + RelativePath="..\code\nodes\actioneventlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\actioneventlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\breakablecameralocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\breakablecameralocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\carstartlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\carstartlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\directionallocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\directionallocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\eventlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\eventlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\fovlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\fovlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\genericlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\genericlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\interiorentrancelocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\interiorentrancelocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\occlusionlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\occlusionlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\pedgrouplocator.cpp"> + </File> + <File + RelativePath="..\code\nodes\pedgrouplocator.h"> + </File> + <File + RelativePath="..\code\nodes\railcamlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\railcamlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\scriptlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\scriptlocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\splinelocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\splinelocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\staticcameralocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\staticcameralocatornode.h"> + </File> + <File + RelativePath="..\code\nodes\triggertypes.h"> + </File> + <File + RelativePath="..\code\nodes\triggervolumenode.cpp"> + </File> + <File + RelativePath="..\code\nodes\triggervolumenode.h"> + </File> + <File + RelativePath="..\code\nodes\wbspline.cpp"> + </File> + <File + RelativePath="..\code\nodes\wbspline.h"> + </File> + <File + RelativePath="..\code\nodes\zoneeventlocatornode.cpp"> + </File> + <File + RelativePath="..\code\nodes\zoneeventlocatornode.h"> + </File> + </Filter> + <Filter + Name="contexts" + Filter=""> + <File + RelativePath="..\code\contexts\locatorcontext.cpp"> + </File> + <File + RelativePath="..\code\contexts\locatorcontext.h"> + </File> + <File + RelativePath="..\code\contexts\triggercontext.cpp"> + </File> + <File + RelativePath="..\code\contexts\triggercontext.h"> + </File> + </Filter> + <Filter + Name="utility" + Filter=""> + <File + RelativePath="..\..\globalcode\utility\GLExt.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\GLExt.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\MExt_template.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\MUI.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\mayahandles.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\nodehelper.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\stdafx.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\transformmatrix.cpp"> + </File> + <File + RelativePath="..\..\globalcode\utility\transformmatrix.h"> + </File> + <File + RelativePath="..\..\globalcode\utility\util.c"> + </File> + <File + RelativePath="..\..\globalcode\utility\util.h"> + </File> + </Filter> + <Filter + Name="mel scripts" + Filter=""> + <File + RelativePath="..\code\scripts\wb_cleanup.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\wb_locator.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\wb_main.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\wb_setup.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\scripts\wb_splines.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install)" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\others\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\others\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\others\$(InputName).mel"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="precompiled header" + Filter=""> + <File + RelativePath="..\code\precompiled\PCH.cpp"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + PrecompiledHeaderThrough="PCH.h"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + UsePrecompiledHeader="1" + PrecompiledHeaderThrough="PCH.h"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\precompiled\PCH.h"> + </File> + </Filter> + <Filter + Name="resources" + Filter=""> + <File + RelativePath="..\code\resources\resource.h"> + </File> + <File + RelativePath="..\code\resources\resource.rc"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCResourceCompilerTool" + AdditionalIncludeDirectories="\simpsons2\tools\worldbuilder\code\resources;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCResourceCompilerTool" + AdditionalIncludeDirectories="\simpsons2\tools\worldbuilder\code\resources;$(NoInherit)"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="AETemplates" + Filter=""> + <File + RelativePath="..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AECarStartLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEEventLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEFOVLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEGenericLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AERailCamLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEScriptLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AESplineLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AETriggerVolumeNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEWBLocatorSuppress.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEWBTriggerButton.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + <File + RelativePath="..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel"> + <FileConfiguration + Name="Tools Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + <FileConfiguration + Name="Tools Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Copy $(InputPath) to Maya (dist and install) Templates" + CommandLine="copy "$(InputPath)" "C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel" +copy "$(InputPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"" + Outputs="C:\AW\Maya4.0\scripts\AETemplates\$(InputName).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\$(InputName).mel"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="SuperCam" + Filter=""> + <File + RelativePath="..\..\..\game\code\camera\icamerashaker.h"> + </File> + <File + RelativePath="..\..\..\game\code\camera\isupercamtarget.h"> + </File> + <File + RelativePath="..\..\..\game\code\camera\railcam.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\camera\railcam.h"> + </File> + <File + RelativePath="..\..\..\game\code\camera\sinecosshaker.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\camera\sinecosshaker.h"> + </File> + <File + RelativePath="..\..\..\game\code\camera\staticcam.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\camera\staticcam.h"> + </File> + <File + RelativePath="..\..\..\game\code\camera\supercam.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\camera\supercam.h"> + </File> + </Filter> + <Filter + Name="TriggerVolumes" + Filter=""> + <File + RelativePath="..\..\..\game\code\meta\locator.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\meta\locator.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\recttriggervolume.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\meta\recttriggervolume.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\spheretriggervolume.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\meta\spheretriggervolume.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\triggerlocator.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\triggervolume.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\meta\triggervolume.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\triggervolumetracker.h"> + </File> + </Filter> + <Filter + Name="game engine" + Filter=""> + <File + RelativePath="..\code\gameengine\gameengine.cpp"> + </File> + <File + RelativePath="..\code\gameengine\gameengine.h"> + </File> + <File + RelativePath="..\code\gameengine\mayacamera.cpp"> + </File> + <File + RelativePath="..\code\gameengine\mayacamera.h"> + </File> + <File + RelativePath="..\code\gameengine\wbcamtarget.cpp"> + </File> + <File + RelativePath="..\code\gameengine\wbcamtarget.h"> + </File> + </Filter> + <Filter + Name="from game" + Filter=""> + <File + RelativePath="..\..\..\game\code\render\DSG\IEntityDSG.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\render\DSG\IEntityDSG.h"> + </File> + <File + RelativePath="..\..\..\game\code\ai\actionnames.h"> + </File> + <File + RelativePath="..\..\..\game\code\worldsim\character\charactercontroller.h"> + </File> + <File + RelativePath="..\..\..\game\code\main\commandlineoptions.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\memory\leakdetection.cpp"> + </File> + <File + RelativePath="..\..\..\game\code\meta\locatorevents.h"> + </File> + <File + RelativePath="..\..\..\game\code\meta\locatortypes.h"> + </File> + </Filter> + <File + RelativePath="..\code\resources\icon1.ico"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/tools/worldbuilder/build/worldbuilder.vcxproj b/tools/worldbuilder/build/worldbuilder.vcxproj new file mode 100644 index 0000000..43e0c3f --- /dev/null +++ b/tools/worldbuilder/build/worldbuilder.vcxproj @@ -0,0 +1,514 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Tools Debug|Win32"> + <Configuration>Tools Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Tools Release|Win32"> + <Configuration>Tools Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <SccProjectName> + </SccProjectName> + <SccAuxPath /> + <SccLocalPath> + </SccLocalPath> + <SccProvider> + </SccProvider> + <Keyword>MFCProj</Keyword> + <ProjectGuid>{B5900135-3859-403D-BC2F-FD90B4C2B2E5}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <UseOfMfc>Dynamic</UseOfMfc> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.21005.1</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <OutDir>.\Release\</OutDir> + <IntDir>.\Release\</IntDir> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <OutDir>.\Debug\</OutDir> + <IntDir>.\Debug\</IntDir> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'"> + <ClCompile> + <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> + <AdditionalIncludeDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;..\..\..\game\libs\pure3d\;..\..\..\game\libs\radcore\inc;..\..\..\game\code\constants;..\..\..\game\code;..\..\..\game\libs\radcontent\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_PC;RAD_WIN32;RAD_RELEASE;WORLD_BUILDER;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <RuntimeTypeInfo>true</RuntimeTypeInfo> + <PrecompiledHeader /> + <PrecompiledHeaderFile>precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>.\Release/worldbuilder.pch</PrecompiledHeaderOutputFile> + <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput> + <AssemblerListingLocation>.\Release/</AssemblerListingLocation> + <ObjectFileName>.\Release/</ObjectFileName> + <ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 /EXPORT:initializePlugin /EXPORT:uninitializePlugin %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaUI.lib;OpenMayaAnim.lib;WS2_32.LIB;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Release\worldbuilder.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <IgnoreSpecificDefaultLibraries>LIBC.lib;LIBCMT.lib;LIBCPMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <ProgramDatabaseFile>.\Release/worldbuilder.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <ImportLibrary>.\Release/worldbuilder.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Release/worldbuilder.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy worldbuilder.mll to Distribution and Maya dir.</Message> + <Command>copy .\Release\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll +copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderr.mll +copy .\Release\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\include\;..\code\;..\..\..\game\libs\pure3d\toollib\inc;..\..\..\game\libs\pure3d\toollib\chunks16\inc;.;..\..\..\game\libs\pure3d\constants;..\..\globalcode;..\..\..\game\libs\radmath;..\..\..\game\libs\pure3d\;..\..\..\game\libs\radcore\inc;..\..\..\game\code\constants;..\..\..\game\code;..\..\..\game\libs\radcontent\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_DEBUG;WIN32;_WINDOWS;NT_PLUGIN;RAD_PC;RAD_WIN32;RAD_DEBUG;WORLD_BUILDER;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <RuntimeTypeInfo>true</RuntimeTypeInfo> + <PrecompiledHeader /> + <PrecompiledHeaderFile>precompiled\PCH.h</PrecompiledHeaderFile> + <PrecompiledHeaderOutputFile>.\Debug/worldbuilder.pch</PrecompiledHeaderOutputFile> + <AssemblerListingLocation>.\Debug/</AssemblerListingLocation> + <ObjectFileName>.\Debug/</ObjectFileName> + <ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName> + <BrowseInformation>true</BrowseInformation> + <WarningLevel>Level3</WarningLevel> + <SuppressStartupBanner>true</SuppressStartupBanner> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <CompileAs>Default</CompileAs> + </ClCompile> + <Link> + <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions> + <AdditionalDependencies>user32.lib;gdi32.lib;glu32.lib;version.lib;Foundation.lib;OpenGL32.lib;OpenMaya.lib;OpenMayaFX.lib;OpenMayaRender.lib;OpenMayaUI.lib;OpenMayaAnim.lib;WS2_32.LIB;%(AdditionalDependencies)</AdditionalDependencies> + <OutputFile>Debug\worldbuilder.mll</OutputFile> + <SuppressStartupBanner>true</SuppressStartupBanner> + <AdditionalLibraryDirectories>..\..\..\game\libs\pure3d\sdks\Maya4_0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDatabaseFile>.\Debug/worldbuilder.pdb</ProgramDatabaseFile> + <SubSystem>Windows</SubSystem> + <ImportLibrary>.\Debug/worldbuilder.lib</ImportLibrary> + </Link> + <Midl> + <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MkTypLibCompatible>true</MkTypLibCompatible> + <SuppressStartupBanner>true</SuppressStartupBanner> + <TargetEnvironment>Win32</TargetEnvironment> + <TypeLibraryName>.\Debug/worldbuilder.tlb</TypeLibraryName> + </Midl> + <PostBuildEvent> + <Message>Copy worldbuilder.mll to Distribution and Maya dir.</Message> + <Command>copy .\Debug\worldbuilder.mll ..\..\MayaTools\Maya4.0\bin\plug-ins\worldbuilder.mll +copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilderd.mll +copy .\Debug\worldbuilder.mll C:\AW\Maya4.0\bin\plug-ins\worldbuilder.mll +</Command> + </PostBuildEvent> + <ResourceCompile> + <PreprocessorDefinitions>_AFXDLL;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <Culture>0x1009</Culture> + </ResourceCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\code\main\constants.h" /> + <ClInclude Include="..\code\main\pluginMain.h" /> + <ClInclude Include="..\code\main\toolhack.h" /> + <ClInclude Include="..\code\main\worldbuilder.h" /> + <ClInclude Include="..\code\commands\export.h" /> + <ClInclude Include="..\code\commands\worldbuildercommands.h" /> + <ClInclude Include="..\code\nodes\actioneventlocatornode.h" /> + <ClInclude Include="..\code\nodes\breakablecameralocatornode.h" /> + <ClInclude Include="..\code\nodes\carstartlocatornode.h" /> + <ClInclude Include="..\code\nodes\directionallocatornode.h" /> + <ClInclude Include="..\code\nodes\eventlocatornode.h" /> + <ClInclude Include="..\code\nodes\fovlocatornode.h" /> + <ClInclude Include="..\code\nodes\genericlocatornode.h" /> + <ClInclude Include="..\code\nodes\interiorentrancelocatornode.h" /> + <ClInclude Include="..\code\nodes\occlusionlocatornode.h" /> + <ClInclude Include="..\code\nodes\pedgrouplocator.h" /> + <ClInclude Include="..\code\nodes\railcamlocatornode.h" /> + <ClInclude Include="..\code\nodes\scriptlocatornode.h" /> + <ClInclude Include="..\code\nodes\splinelocatornode.h" /> + <ClInclude Include="..\code\nodes\staticcameralocatornode.h" /> + <ClInclude Include="..\code\nodes\triggertypes.h" /> + <ClInclude Include="..\code\nodes\triggervolumenode.h" /> + <ClInclude Include="..\code\nodes\wbspline.h" /> + <ClInclude Include="..\code\nodes\zoneeventlocatornode.h" /> + <ClInclude Include="..\code\contexts\locatorcontext.h" /> + <ClInclude Include="..\code\contexts\triggercontext.h" /> + <ClInclude Include="..\..\globalcode\utility\GLExt.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt.h" /> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h" /> + <ClInclude Include="..\..\globalcode\utility\MUI.h" /> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h" /> + <ClInclude Include="..\..\globalcode\utility\nodehelper.h" /> + <ClInclude Include="..\..\globalcode\utility\stdafx.h" /> + <ClInclude Include="..\..\globalcode\utility\transformmatrix.h" /> + <ClInclude Include="..\..\globalcode\utility\util.h" /> + <ClInclude Include="..\code\precompiled\PCH.h" /> + <ClInclude Include="..\code\resources\resource.h" /> + <ClInclude Include="..\..\..\game\code\camera\icamerashaker.h" /> + <ClInclude Include="..\..\..\game\code\camera\isupercamtarget.h" /> + <ClInclude Include="..\..\..\game\code\camera\railcam.h" /> + <ClInclude Include="..\..\..\game\code\camera\sinecosshaker.h" /> + <ClInclude Include="..\..\..\game\code\camera\staticcam.h" /> + <ClInclude Include="..\..\..\game\code\camera\supercam.h" /> + <ClInclude Include="..\..\..\game\code\meta\locator.h" /> + <ClInclude Include="..\..\..\game\code\meta\recttriggervolume.h" /> + <ClInclude Include="..\..\..\game\code\meta\spheretriggervolume.h" /> + <ClInclude Include="..\..\..\game\code\meta\triggerlocator.h" /> + <ClInclude Include="..\..\..\game\code\meta\triggervolume.h" /> + <ClInclude Include="..\..\..\game\code\meta\triggervolumetracker.h" /> + <ClInclude Include="..\code\gameengine\gameengine.h" /> + <ClInclude Include="..\code\gameengine\mayacamera.h" /> + <ClInclude Include="..\code\gameengine\wbcamtarget.h" /> + <ClInclude Include="..\..\..\game\code\render\DSG\IEntityDSG.h" /> + <ClInclude Include="..\..\..\game\code\ai\actionnames.h" /> + <ClInclude Include="..\..\..\game\code\worldsim\character\charactercontroller.h" /> + <ClInclude Include="..\..\..\game\code\meta\locatorevents.h" /> + <ClInclude Include="..\..\..\game\code\meta\locatortypes.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp" /> + <ClCompile Include="..\code\main\worldbuilder.cpp" /> + <ClCompile Include="..\code\commands\export.cpp" /> + <ClCompile Include="..\code\commands\worldbuildercommands.cpp" /> + <ClCompile Include="..\code\nodes\actioneventlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\breakablecameralocatornode.cpp" /> + <ClCompile Include="..\code\nodes\carstartlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\directionallocatornode.cpp" /> + <ClCompile Include="..\code\nodes\eventlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\fovlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\genericlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\interiorentrancelocatornode.cpp" /> + <ClCompile Include="..\code\nodes\occlusionlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\pedgrouplocator.cpp" /> + <ClCompile Include="..\code\nodes\railcamlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\scriptlocatornode.cpp" /> + <ClCompile Include="..\code\nodes\splinelocatornode.cpp" /> + <ClCompile Include="..\code\nodes\staticcameralocatornode.cpp" /> + <ClCompile Include="..\code\nodes\triggervolumenode.cpp" /> + <ClCompile Include="..\code\nodes\wbspline.cpp" /> + <ClCompile Include="..\code\nodes\zoneeventlocatornode.cpp" /> + <ClCompile Include="..\code\contexts\locatorcontext.cpp" /> + <ClCompile Include="..\code\contexts\triggercontext.cpp" /> + <ClCompile Include="..\..\globalcode\utility\GLExt.cpp" /> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp" /> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp" /> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp" /> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp" /> + <ClCompile Include="..\..\globalcode\utility\transformmatrix.cpp" /> + <ClCompile Include="..\..\globalcode\utility\util.c" /> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">PCH.h</PrecompiledHeaderFile> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Create</PrecompiledHeader> + <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">PCH.h</PrecompiledHeaderFile> + </ClCompile> + <ClCompile Include="..\..\..\game\code\camera\railcam.cpp" /> + <ClCompile Include="..\..\..\game\code\camera\sinecosshaker.cpp" /> + <ClCompile Include="..\..\..\game\code\camera\staticcam.cpp" /> + <ClCompile Include="..\..\..\game\code\camera\supercam.cpp" /> + <ClCompile Include="..\..\..\game\code\meta\locator.cpp" /> + <ClCompile Include="..\..\..\game\code\meta\recttriggervolume.cpp" /> + <ClCompile Include="..\..\..\game\code\meta\spheretriggervolume.cpp" /> + <ClCompile Include="..\..\..\game\code\meta\triggervolume.cpp" /> + <ClCompile Include="..\code\gameengine\gameengine.cpp" /> + <ClCompile Include="..\code\gameengine\mayacamera.cpp" /> + <ClCompile Include="..\code\gameengine\wbcamtarget.cpp" /> + <ClCompile Include="..\..\..\game\code\render\DSG\IEntityDSG.cpp" /> + <ClCompile Include="..\..\..\game\code\main\commandlineoptions.cpp" /> + <ClCompile Include="..\..\..\game\code\memory\leakdetection.cpp" /> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\wb_cleanup.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_locator.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_main.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_setup.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_splines.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install)</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\others\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\others\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\others\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AECarStartLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEEventLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEFOVLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEGenericLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AERailCamLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEScriptLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AESplineLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETriggerVolumeNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEWBLocatorSuppress.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEWBTriggerButton.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel"> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + <Message Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">Copy %(FullPath) to Maya (dist and install) Templates</Message> + <Command Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">copy "%(FullPath)" "C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel" +copy "%(FullPath)" "..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel"</Command> + <Outputs Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">C:\AW\Maya4.0\scripts\AETemplates\%(Filename).mel;..\..\MayaTools\Maya4.0\scripts\AETemplates\%(Filename).mel;%(Outputs)</Outputs> + </CustomBuild> + <None Include="..\code\resources\icon1.ico" /> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="..\code\resources\resource.rc"> + <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Tools Debug|Win32'">\simpsons2\tools\worldbuilder\code\resources</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Tools Release|Win32'">\simpsons2\tools\worldbuilder\code\resources</AdditionalIncludeDirectories> + </ResourceCompile> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\game\libs\pure3d\lib\freetype\builds\win32\visualc\freetype.vcxproj"> + <Project>{6d333c70-a27d-4e25-ad26-bb9e20558b8f}</Project> + <ReferenceOutputAssembly>false</ReferenceOutputAssembly> + </ProjectReference> + <ProjectReference Include="..\..\..\game\libs\pure3d\toollib\toollib_extras.vcxproj"> + <Project>{cdb92e4a-1e5d-49a8-8153-34264b3fef29}</Project> + <ReferenceOutputAssembly>false</ReferenceOutputAssembly> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/tools/worldbuilder/build/worldbuilder.vcxproj.filters b/tools/worldbuilder/build/worldbuilder.vcxproj.filters new file mode 100644 index 0000000..3a0a61c --- /dev/null +++ b/tools/worldbuilder/build/worldbuilder.vcxproj.filters @@ -0,0 +1,430 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="main"> + <UniqueIdentifier>{366c6ba8-356c-47df-8d66-9bd89b60358c}</UniqueIdentifier> + </Filter> + <Filter Include="commands"> + <UniqueIdentifier>{935b3601-b5b9-47f8-ba04-ad2dd1e02b63}</UniqueIdentifier> + </Filter> + <Filter Include="nodes"> + <UniqueIdentifier>{d220ea56-95c9-4d82-a653-58cf05c5236f}</UniqueIdentifier> + </Filter> + <Filter Include="contexts"> + <UniqueIdentifier>{c8ebdea7-8295-4987-8a5e-019ed8aa09e8}</UniqueIdentifier> + </Filter> + <Filter Include="utility"> + <UniqueIdentifier>{7ad26358-0035-4d79-9634-d1bb4038dcb8}</UniqueIdentifier> + </Filter> + <Filter Include="mel scripts"> + <UniqueIdentifier>{40773277-3c27-4841-a98a-0b283730dc7c}</UniqueIdentifier> + </Filter> + <Filter Include="precompiled header"> + <UniqueIdentifier>{af47442b-26b9-4735-8425-6706a3083197}</UniqueIdentifier> + </Filter> + <Filter Include="resources"> + <UniqueIdentifier>{0e0156cf-22b5-4b50-96e0-429a7358170b}</UniqueIdentifier> + </Filter> + <Filter Include="AETemplates"> + <UniqueIdentifier>{95adfaf0-4424-4f9b-b47a-b99817d16fd4}</UniqueIdentifier> + </Filter> + <Filter Include="SuperCam"> + <UniqueIdentifier>{8f1fd96b-381a-4211-bda0-0b6d6b3ed6e6}</UniqueIdentifier> + </Filter> + <Filter Include="TriggerVolumes"> + <UniqueIdentifier>{98be18c4-5fa3-465b-ae4a-f82a46c20b0d}</UniqueIdentifier> + </Filter> + <Filter Include="game engine"> + <UniqueIdentifier>{8f086d86-61ae-4349-88d8-49f1a6127674}</UniqueIdentifier> + </Filter> + <Filter Include="from game"> + <UniqueIdentifier>{01be528e-1bc5-4113-9fa2-863b9ba84a86}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\code\main\constants.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\pluginMain.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\toolhack.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\main\worldbuilder.h"> + <Filter>main</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\export.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\commands\worldbuildercommands.h"> + <Filter>commands</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\actioneventlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\breakablecameralocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\carstartlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\directionallocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\eventlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\fovlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\genericlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\interiorentrancelocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\occlusionlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\pedgrouplocator.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\railcamlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\scriptlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\splinelocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\staticcameralocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\triggertypes.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\triggervolumenode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\wbspline.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\nodes\zoneeventlocatornode.h"> + <Filter>nodes</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\locatorcontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\code\contexts\triggercontext.h"> + <Filter>contexts</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\GLExt.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MExt_template.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\MUI.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\mayahandles.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\nodehelper.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\stdafx.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\transformmatrix.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\..\globalcode\utility\util.h"> + <Filter>utility</Filter> + </ClInclude> + <ClInclude Include="..\code\precompiled\PCH.h"> + <Filter>precompiled header</Filter> + </ClInclude> + <ClInclude Include="..\code\resources\resource.h"> + <Filter>resources</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\icamerashaker.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\isupercamtarget.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\railcam.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\sinecosshaker.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\staticcam.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\camera\supercam.h"> + <Filter>SuperCam</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\locator.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\recttriggervolume.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\spheretriggervolume.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\triggerlocator.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\triggervolume.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\triggervolumetracker.h"> + <Filter>TriggerVolumes</Filter> + </ClInclude> + <ClInclude Include="..\code\gameengine\gameengine.h"> + <Filter>game engine</Filter> + </ClInclude> + <ClInclude Include="..\code\gameengine\mayacamera.h"> + <Filter>game engine</Filter> + </ClInclude> + <ClInclude Include="..\code\gameengine\wbcamtarget.h"> + <Filter>game engine</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\render\DSG\IEntityDSG.h"> + <Filter>from game</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\ai\actionnames.h"> + <Filter>from game</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\worldsim\character\charactercontroller.h"> + <Filter>from game</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\locatorevents.h"> + <Filter>from game</Filter> + </ClInclude> + <ClInclude Include="..\..\..\game\code\meta\locatortypes.h"> + <Filter>from game</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\code\main\pluginMain.cpp"> + <Filter>main</Filter> + </ClCompile> + <ClCompile Include="..\code\main\worldbuilder.cpp"> + <Filter>main</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\export.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\commands\worldbuildercommands.cpp"> + <Filter>commands</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\actioneventlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\breakablecameralocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\carstartlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\directionallocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\eventlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\fovlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\genericlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\interiorentrancelocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\occlusionlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\pedgrouplocator.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\railcamlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\scriptlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\splinelocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\staticcameralocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\triggervolumenode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\wbspline.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\nodes\zoneeventlocatornode.cpp"> + <Filter>nodes</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\locatorcontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\code\contexts\triggercontext.cpp"> + <Filter>contexts</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\GLExt.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MExt_template.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\MUI.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\mayahandles.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\transformmatrix.cpp"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\..\globalcode\utility\util.c"> + <Filter>utility</Filter> + </ClCompile> + <ClCompile Include="..\code\precompiled\PCH.cpp"> + <Filter>precompiled header</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\camera\railcam.cpp"> + <Filter>SuperCam</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\camera\sinecosshaker.cpp"> + <Filter>SuperCam</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\camera\staticcam.cpp"> + <Filter>SuperCam</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\camera\supercam.cpp"> + <Filter>SuperCam</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\meta\locator.cpp"> + <Filter>TriggerVolumes</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\meta\recttriggervolume.cpp"> + <Filter>TriggerVolumes</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\meta\spheretriggervolume.cpp"> + <Filter>TriggerVolumes</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\meta\triggervolume.cpp"> + <Filter>TriggerVolumes</Filter> + </ClCompile> + <ClCompile Include="..\code\gameengine\gameengine.cpp"> + <Filter>game engine</Filter> + </ClCompile> + <ClCompile Include="..\code\gameengine\mayacamera.cpp"> + <Filter>game engine</Filter> + </ClCompile> + <ClCompile Include="..\code\gameengine\wbcamtarget.cpp"> + <Filter>game engine</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\render\DSG\IEntityDSG.cpp"> + <Filter>from game</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\main\commandlineoptions.cpp"> + <Filter>from game</Filter> + </ClCompile> + <ClCompile Include="..\..\..\game\code\memory\leakdetection.cpp"> + <Filter>from game</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <None Include="..\code\resources\icon1.ico" /> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="..\code\resources\resource.rc"> + <Filter>resources</Filter> + </ResourceCompile> + </ItemGroup> + <ItemGroup> + <CustomBuild Include="..\code\scripts\wb_cleanup.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_locator.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_main.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_setup.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\scripts\wb_splines.mel"> + <Filter>mel scripts</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEActionEventLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEBreakableCameraLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AECarStartLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEDirectionalLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEEventLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEFOVLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEGenericLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEInteriorEntranceLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEOcclusionLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AERailCamLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEScriptLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AESplineLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEStaticCameraLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AETriggerVolumeNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEWBLocatorSuppress.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEWBTriggerButton.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + <CustomBuild Include="..\code\AETemplates\AEZoneEventLocatorNodeTemplate.mel"> + <Filter>AETemplates</Filter> + </CustomBuild> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEActionEventLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEActionEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..4c1a413 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEActionEventLocatorNodeTemplate.mel @@ -0,0 +1,34 @@ +global proc AEActionEventLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + + editorTemplate -addControl "exportTransform"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Action Attribute" -collapse false; + editorTemplate -addControl "actionObject"; + editorTemplate -addControl "joint"; + editorTemplate -addControl "action"; + editorTemplate -addControl "buttonInput"; + editorTemplate -addControl "shouldTransform"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel new file mode 100644 index 0000000..82a08f2 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEBreakableCameraLocatorNodeTemplate.mel @@ -0,0 +1,20 @@ +global proc AEBreakableCameraLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "FOV Settings" -collapse 0; + editorTemplate -addControl "fov"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AECarStartLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AECarStartLocatorNodeTemplate.mel new file mode 100644 index 0000000..a3e9f04 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AECarStartLocatorNodeTemplate.mel @@ -0,0 +1,21 @@ +global proc AECarStartLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Car Start Data" -collapse 0; + editorTemplate -addControl "isParked"; + editorTemplate -addControl "specialName"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEDirectionalLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEDirectionalLocatorNodeTemplate.mel new file mode 100644 index 0000000..cd9d34e --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEDirectionalLocatorNodeTemplate.mel @@ -0,0 +1,16 @@ +global proc AEDirectionalLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEEventLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..9d6443b --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEEventLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEEventLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Event Attributes" -collapse false; + editorTemplate -addControl "event"; + editorTemplate -addControl "extraData"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEFOVLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEFOVLocatorNodeTemplate.mel new file mode 100644 index 0000000..c02a84a --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEFOVLocatorNodeTemplate.mel @@ -0,0 +1,30 @@ +global proc AEFOVLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "FOV Settings" -collapse 0; + editorTemplate -addControl "fov"; + editorTemplate -addControl "time"; + editorTemplate -addControl "rate"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEGenericLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEGenericLocatorNodeTemplate.mel new file mode 100644 index 0000000..c1ed3cb --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEGenericLocatorNodeTemplate.mel @@ -0,0 +1,16 @@ +global proc AEGenericLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel new file mode 100644 index 0000000..f23f6ee --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEInteriorEntranceLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEInteriorEntranceLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Interior Attribute" -collapse false; + editorTemplate -addControl "zone"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEOcclusionLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEOcclusionLocatorNodeTemplate.mel new file mode 100644 index 0000000..5833530 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEOcclusionLocatorNodeTemplate.mel @@ -0,0 +1,29 @@ + +global proc AEOcclusionLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNewOcclude" + "AEWBTriggerButtonReplaceOcclude" + "message"; + + editorTemplate -callCustom "AEWBTriggerButtonNewVisible" + "AEWBTriggerButtonReplaceVisible" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEPedGroupLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEPedGroupLocatorNodeTemplate.mel new file mode 100644 index 0000000..1dcfcce --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEPedGroupLocatorNodeTemplate.mel @@ -0,0 +1,26 @@ +global proc AEPedGroupLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Ped Group Attributes" -collapse 0; + editorTemplate -addControl "group"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AERailCamLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AERailCamLocatorNodeTemplate.mel new file mode 100644 index 0000000..7d3178c --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AERailCamLocatorNodeTemplate.mel @@ -0,0 +1,56 @@ +global proc AERailCamLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Rail Attributes" -collapse false; + editorTemplate -addControl "cutInOut"; + editorTemplate -addControl "carOnly"; + editorTemplate -addControl "onFootOnly"; + editorTemplate -addControl "reset"; + editorTemplate -addControl "noFOV"; + editorTemplate -addControl "camRail"; + editorTemplate -addControl "behaviour"; + editorTemplate -addControl "minRadius"; + editorTemplate -addControl "maxRadius"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "trackRail"; + editorTemplate -addControl "trackDist"; + editorTemplate -addControl "reverseSense"; + editorTemplate -addControl "fieldOfView"; + editorTemplate -addControl "facingOffset"; + editorTemplate -addControl "axisPlay"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "positionLag"; + editorTemplate -addControl "targetLag"; + + editorTemplate -addSeparator; + + editorTemplate -addControl"active"; + editorTemplate -addControl "target"; + + editorTemplate -addSeparator; + editorTemplate -addControl "transitionTo"; + + editorTemplate -callCustom "AEWBTargetSelectNew" + "AEWBTargetSelectReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEScriptLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEScriptLocatorNodeTemplate.mel new file mode 100644 index 0000000..2e800c8 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEScriptLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEScriptLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Script Attributes" -collapse false; + editorTemplate -addControl "script"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AESplineLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AESplineLocatorNodeTemplate.mel new file mode 100644 index 0000000..57e5e2a --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AESplineLocatorNodeTemplate.mel @@ -0,0 +1,23 @@ +global proc AESplineLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEStaticCameraLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEStaticCameraLocatorNodeTemplate.mel new file mode 100644 index 0000000..d611957 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEStaticCameraLocatorNodeTemplate.mel @@ -0,0 +1,52 @@ +global proc AEStaticCameraLocatorNodeTemplate( string $nodeName ) +{ + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Camera Attributes" -collapse false; + editorTemplate -addControl "cutInOut"; + editorTemplate -addControl "carOnly"; + editorTemplate -addControl "onFootOnly"; + editorTemplate -addControl "oneShot"; + editorTemplate -addControl "noFOV"; + editorTemplate -addControl "fieldOfView"; + editorTemplate -addControl "facingOffset"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "targetLag"; + + editorTemplate -addSeparator; + + editorTemplate -addControl "active"; + + editorTemplate -addControl "target"; + editorTemplate -addControl "tracking"; + + editorTemplate -addSeparator; + editorTemplate -addControl "transitionTo"; + + editorTemplate -callCustom "AEWBTargetSelectNew" + "AEWBTargetSelectReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AETriggerVolumeNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AETriggerVolumeNodeTemplate.mel new file mode 100644 index 0000000..4166b0e --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AETriggerVolumeNodeTemplate.mel @@ -0,0 +1,18 @@ +global proc AETriggerVolumeNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Trigger Volume Attributes" -collapse 0; + AElocatorCommon $nodeName; + + editorTemplate -addControl "type"; + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEWBLocatorSuppress.mel b/tools/worldbuilder/code/AETemplates/AEWBLocatorSuppress.mel new file mode 100644 index 0000000..e9784d8 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEWBLocatorSuppress.mel @@ -0,0 +1,37 @@ +global proc AEWBLocatorSuppress( string $nodeName ) +{ + editorTemplate -suppress "inputTranslate"; + editorTemplate -suppress "input"; + editorTemplate -suppress "caching"; + editorTemplate -suppress "nodeState"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "template"; + editorTemplate -suppress "ghosting"; + editorTemplate -suppress "instObjGroups"; + editorTemplate -suppress "compInstObjGroups"; + editorTemplate -suppress "castsShadows"; + editorTemplate -suppress "receiveShadows"; + editorTemplate -suppress "depthJitter"; + editorTemplate -suppress "motionBlur"; + editorTemplate -suppress "renderInfo"; + editorTemplate -suppress "primaryVisibility"; + editorTemplate -suppress "visibleInReflections"; + editorTemplate -suppress "visibleInRefractions"; + editorTemplate -suppress "geometryAntialiasingOverride"; + editorTemplate -suppress "antialiasingLevel"; + editorTemplate -suppress "shadingSamplesOverride"; + editorTemplate -suppress "shadingSamples"; + editorTemplate -suppress "maxShadingSamples"; + editorTemplate -suppress "volumeSamplesOverride"; + editorTemplate -suppress "volumeSamples"; + editorTemplate -suppress "maxVisibilitySamplesOverride"; + editorTemplate -suppress "maxVisibilitySamples"; + editorTemplate -suppress "boundingBoxScale"; + editorTemplate -suppress "drawOverride"; + editorTemplate -suppress "useObjectColor"; + editorTemplate -suppress "objectColor"; + editorTemplate -suppress "intermediateObject"; + editorTemplate -suppress "visibility"; + editorTemplate -suppress "lodVisibility"; +}
\ No newline at end of file diff --git a/tools/worldbuilder/code/AETemplates/AEWBSelectTarget.mel b/tools/worldbuilder/code/AETemplates/AEWBSelectTarget.mel new file mode 100644 index 0000000..d1cd428 --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEWBSelectTarget.mel @@ -0,0 +1,34 @@ +global proc wb_BCB_SelectTarget( string $nodeName ) +{ + select $nodeName; + string $actNodes[] = `ls -sl -o`; + + string $text = `textField -q -text WBTargetName`; + + print ($text + "\n"); + + if ( $text != "" ) + { + evalEcho ("setAttr " + $actNodes[0] + ".target -type \"string\" \"" + $text + "\""); + } + + select $actNodes[0]; +} + +global proc AEWBTargetSelectNew( string $nodeName ) +{ + columnLayout -adj true; + + textField -ed true WBTargetName; + string $command = "wb_BCB_SelectTarget( \"" + $nodeName + "\" )"; + button -label "Select Target" -command $command WBSelectTargetButton; + + setParent ..; +} + +global proc AEWBTargetSelectReplace( string $nodeName ) +{ + textField -e -text "" WBTargetName; + string $command = "wb_BCB_SelectTarget( \"" + $nodeName + "\" )"; + button -e -command $command WBSelectTargetButton; +} diff --git a/tools/worldbuilder/code/AETemplates/AEWBTriggerButton.mel b/tools/worldbuilder/code/AETemplates/AEWBTriggerButton.mel new file mode 100644 index 0000000..ddb862a --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEWBTriggerButton.mel @@ -0,0 +1,94 @@ +global int $gIsItVisibler = 0; + +global proc AEWBTriggerButtonNew( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -label "Attach Triggers" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + + +global proc AEWBTriggerButtonReplace( string $nodeName ) +{ + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc AEWBTriggerButtonNewOcclude( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -label "Add Occlusion Volume" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + +global proc AEWBTriggerButtonReplaceOcclude( string $nodeName ) +{ + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 0)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc AEWBTriggerButtonNewVisible( string $nodeName ) +{ + columnLayout -adj true; + + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 1)"; + + button -label "Add Visibler Volume" -command $command WBMakeTriggerButton; + + setParent ..; + + select $names[0]; +} + +global proc AEWBTriggerButtonReplaceVisible( string $nodeName ) +{ + select $nodeName; + string $names[] = `ls -sl -o`; + + string $command = "wb_BCB_AttachTriggers(\"" + $names[0] + "\", 1)"; + + button -e -command $command WBMakeTriggerButton; + + select $names[0]; +} + +global proc int IsVisibler() +{ + global int $gIsItVisibler; + + return $gIsItVisibler; +} diff --git a/tools/worldbuilder/code/AETemplates/AEZoneEventLocatorNodeTemplate.mel b/tools/worldbuilder/code/AETemplates/AEZoneEventLocatorNodeTemplate.mel new file mode 100644 index 0000000..869066a --- /dev/null +++ b/tools/worldbuilder/code/AETemplates/AEZoneEventLocatorNodeTemplate.mel @@ -0,0 +1,28 @@ +global proc AEZoneEventLocatorNodeTemplate( string $nodeName ) +{ + + editorTemplate -beginScrollLayout; + + editorTemplate -beginLayout "Locator Attributes" -collapse 0; + AElocatorCommon $nodeName; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Zone Attribute" -collapse false; + editorTemplate -addControl "zone"; + editorTemplate -endLayout; + + editorTemplate -beginLayout "Triggers" -collapse 0; + + editorTemplate -callCustom "AEWBTriggerButtonNew" + "AEWBTriggerButtonReplace" + "message"; + + editorTemplate -endLayout; + + editorTemplate -addExtraControls; + + editorTemplate -endScrollLayout; + + AEWBLocatorSuppress( $nodeName ); +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/commands/export.cpp b/tools/worldbuilder/code/commands/export.cpp new file mode 100644 index 0000000..dda3c16 --- /dev/null +++ b/tools/worldbuilder/code/commands/export.cpp @@ -0,0 +1,282 @@ +#include "main/toolhack.h" + +#include "precompiled/PCH.h" + +#include "export.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "nodes/eventlocatornode.h" +#include "nodes/scriptlocatornode.h" +#include "nodes/genericlocatornode.h" +#include "nodes/carstartlocatornode.h" +#include "nodes/triggervolumenode.h" +#include "nodes/splinelocatornode.h" +#include "nodes/zoneeventlocatornode.h" +#include "nodes/occlusionlocatornode.h" +#include "nodes/railcamlocatornode.h" +#include "nodes/interiorentrancelocatornode.h" +#include "nodes/directionallocatornode.h" +#include "nodes/actioneventlocatornode.h" +#include "nodes/fovlocatornode.h" +#include "nodes/BreakableCameraLocatorNode.h" +#include "nodes/StaticCameraLocatorNode.h" +#include "nodes/PedGroupLocator.h" +#include "nodes/wbspline.h" +#include "utility/mui.h" +#include "utility/mext.h" + +#include <toollib.hpp> + +#include "../../../game/code/meta/locatortypes.h" + +const char* ExportCommand::stringId = "WB_Export"; +bool ExportCommand::sRegisteredChunks = false; + +ExportCommand::ExportCommand() {}; +ExportCommand::~ExportCommand() {}; + +//============================================================================== +// ExportCommand::creator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void* ExportCommand::creator() +{ + return new ExportCommand(); +} + +//============================================================================== +// ExportCommand::doIt +//============================================================================== +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================== +MStatus ExportCommand::doIt( const MArgList& args ) +{ + if ( !sRegisteredChunks ) + { + tlDataChunk::RegisterDefaultChunks(); + sRegisteredChunks = true; + } + + MStatus status; + + //Go through all the chunks looking for the types we want and exporting them. + //Alternatively, we could go thtough all the chunks and attempt to access the + //IExportable interface and then export if the interface exists... + + //Args are all, or selected. + + const unsigned char FILE_NAME_SIZE = 255; + char filePath[FILE_NAME_SIZE]; + filePath[0] = '\0'; + + if ( MUI::FileDialog( filePath, + FILE_NAME_SIZE, + "World Builder Export", + "Pure3D(*.p3d)|*.p3d|All Files(*.*)|*.*||", + "p3d", + MUI::SAVE ) ) + { + MDagPath pathToWorldBuilder; + if ( !MExt::FindDagNodeByName( &pathToWorldBuilder, MString( WorldBuilder::sName ) ) ) + { + return MStatus::kSuccess; + } + + MItDag dagIt; + dagIt.reset( pathToWorldBuilder, MItDag::kBreadthFirst ); + + tlDataChunk* outChunk = new tlDataChunk; + + //Put in a history chunk. + tlHistory history; + + char hist[256]; +// sprintf(hist, "World Builder version: 2.0, toollib version: %s", tlversion); + +// history.AddLine( hist ); + + outChunk->AppendSubChunk( history.Chunk(), 0 ); + + bool deleteLast = false; + MFnDependencyNode fnNode; + MObject lastObj; + MTypeId id; + + while ( !dagIt.isDone() ) + { + fnNode.setObject( dagIt.item() ); + id = fnNode.typeId(); + + tlDataChunk* newChunk = NULL; + + if ( id == EventLocatorNode::id ) + { + //Export an event locator; + newChunk = EventLocatorNode::Export( dagIt.item() ); + } + else if ( id == ScriptLocatorNode::id ) + { + //export a script locator + newChunk = ScriptLocatorNode::Export( dagIt.item() ); + } + else if ( id == GenericLocatorNode::id ) + { + //export a script locator + newChunk = GenericLocatorNode::Export( dagIt.item() ); + } + else if ( id == CarStartLocatorNode::id ) + { + //export a script locator + newChunk = CarStartLocatorNode::Export( dagIt.item() ); + } + else if ( id == SplineLocatorNode::id ) + { + //Export a spline locator + newChunk = SplineLocatorNode::Export( dagIt.item() ); + } + else if ( id == ZoneEventLocatorNode::id ) + { + //Export a zone event locator + newChunk = ZoneEventLocatorNode::Export( dagIt.item() ); + } + else if ( id == OcclusionLocatorNode::id ) + { + //Export a zone event locator + newChunk = OcclusionLocatorNode::Export( dagIt.item() ); + } + else if ( id == InteriorEntranceLocatorNode::id ) + { + //Export an interior entrance + newChunk = InteriorEntranceLocatorNode::Export( dagIt.item() ); + } + else if ( id == DirectionalLocatorNode::id ) + { + //Export an interior entrance + newChunk = DirectionalLocatorNode::Export( dagIt.item() ); + } + else if ( id == ActionEventLocatorNode::id ) + { + //Export an interior entrance + newChunk = ActionEventLocatorNode::Export( dagIt.item() ); + } + else if ( id == FOVLocatorNode::id ) + { + //Export an interior entrance + newChunk = FOVLocatorNode::Export( dagIt.item() ); + } + else if ( id == BreakableCameraLocatorNode::id ) + { + //Export an interior entrance + newChunk = BreakableCameraLocatorNode::Export( dagIt.item() ); + } + else if ( id == StaticCameraLocatorNode::id ) + { + //Export an interior entrance + newChunk = StaticCameraLocatorNode::Export( dagIt.item() ); + } + else if ( id == PedGroupLocatorNode::id ) + { + //Export an interior entrance + newChunk = PedGroupLocatorNode::Export( dagIt.item() ); + } + else if ( id == RailCamLocatorNode::id ) + { + //Don't export, but don't delete either. + } + else + { + //Is it a nurbs curve or a trigger volume? + MFnNurbsCurve( dagIt.item(), &status ); + + if ( !status && id != TriggerVolumeNode::id ) + { + deleteLast = true; + } + } + + if ( newChunk ) + { + tlWBLocatorChunk* newLoc = dynamic_cast<tlWBLocatorChunk*>(newChunk); + + if ( newLoc ) + { + if ( newLoc->Type() == LocatorType::GENERIC ) + { + unsigned int i; + for ( i = 0; i < newChunk->SubChunkCount(); ++i ) + { + outChunk->AppendSubChunk( newChunk->GetSubChunk( i ) ); + + } + + if ( i == 0 ) + { + //Append to output file + outChunk->AppendSubChunk( newChunk ); + } + } + else + { + outChunk->AppendSubChunk( newChunk ); + } + } + else + { + + //Append to output file + outChunk->AppendSubChunk( newChunk ); + } + } + + if ( deleteLast ) + { + lastObj = dagIt.item(); + } + + dagIt.next(); + + if ( deleteLast ) + { + MFnTransform fnTransform( lastObj, &status ); + if ( !status ) + { + MExt::DisplayWarning( "Deleting useless node: %s", fnNode.name().asChar() ); + MExt::DeleteNode( lastObj, true ); + } + deleteLast = false; + } + } + + tlFile output(new tlFileByteStream(filePath, omWRITE), tlFile::CHUNK32); + + if(!output.IsOpen()) + { + + MGlobal::displayError("Unable to write file!"); + + delete outChunk; + return MS::kFailure; + } + + //Sort it out.. + outChunk->SortSubChunks(); + outChunk->Write(&output); + + delete outChunk; + + MGlobal::executeCommand( MString("flushUndo") ); + } + + return MS::kSuccess; +} diff --git a/tools/worldbuilder/code/commands/export.h b/tools/worldbuilder/code/commands/export.h new file mode 100644 index 0000000..3ae78dc --- /dev/null +++ b/tools/worldbuilder/code/commands/export.h @@ -0,0 +1,26 @@ +#include "precompiled/PCH.h" + +#ifndef EXPORT_COMMAND_H +#define EXPORT_COMMAND_H + +class ExportCommand : MPxCommand +{ +public: + enum ExportArg + { + SELECTED, + ALL + }; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; + +private: + ExportCommand(); + ~ExportCommand(); + + static bool sRegisteredChunks; +}; +#endif
\ No newline at end of file diff --git a/tools/worldbuilder/code/commands/worldbuildercommands.cpp b/tools/worldbuilder/code/commands/worldbuildercommands.cpp new file mode 100644 index 0000000..92dde07 --- /dev/null +++ b/tools/worldbuilder/code/commands/worldbuildercommands.cpp @@ -0,0 +1,689 @@ +#include "worldbuildercommands.h" +#include "main/worldbuilder.h" +#include "utility/mui.h" +#include "utility/mext.h" +#include "resources/resource.h" +#include "main/constants.h" +#include "nodes/wbspline.h" +#include "nodes/splinelocatornode.h" +#include "nodes/triggervolumenode.h" +#include "nodes/railcamlocatornode.h" + +const char* WBChangeDisplayCommand::stringId = "WB_ChangeDisplay"; +const char* WBSetLocatorTypeCmd::stringId = "WB_SetLocatorType"; +const char* WBSetPrefixCmd::stringId = "WB_SetPrefix"; +const char* WBSnapLocatorCmd::stringId = "WB_SnapLocator"; +const char* WBSplineCompleteCmd::stringId = "WB_SplineComplete"; +const char* WBCoinSplineCompleteCmd::stringId = "WB_CoinSplineComplete"; +const char* WBSelectObjectCmd::stringId = "WB_SelectObject"; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK SetPrefixLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT1, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDCANCEL || + LOWORD(wParam) == IDC_BUTTON1 || + LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[WorldBuilder::MAX_PREFIX_LENGTH]; + GetDlgItemText( hWnd, IDC_EDIT1, name, WorldBuilder::MAX_PREFIX_LENGTH ); + + WorldBuilder::SetPrefix( name ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +BOOL CALLBACK SplineNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[WBSpline::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, WBSpline::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Spline!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + WBSpline::SetName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + WBSpline::SetName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Commands +// +//****************************************************************************** + +//============================================================================= +// WBChangeDisplayCommand::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBChangeDisplayCommand::creator() +{ + return new WBChangeDisplayCommand(); +} + +//============================================================================= +// WBChangeDisplayCommand::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus WBChangeDisplayCommand::doIt( const MArgList& args ) +{ + assert( args.length() == 2 ); + int arg; + args.get(0, arg); + + int on; + args.get(1, on); + + WorldBuilder::SetDisplayLevel( arg, on == 1 ); + + //Careful, don't call this too often! + M3dView::active3dView().refresh( true, true ); + return MStatus::kSuccess; +} + +//============================================================================= +// WBSetLocatorTypeCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBSetLocatorTypeCmd::creator() +{ + return new WBSetLocatorTypeCmd(); +} + +//============================================================================= +// WBSetLocatorTypeCmd::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus WBSetLocatorTypeCmd::doIt( const MArgList& args ) +{ + assert( args.length() == 1 ); + + MString string; + args.get( 0, string ); + + LocatorType::Type type; + + int i; + for ( i = 0; i < LocatorType::NUM_TYPES; ++i ) + { + if ( string == MString( LocatorType::Name[i] ) ) + { + type = (LocatorType::Type)i; + WorldBuilder::SetLocatorType( type ); + + return MStatus::kSuccess; + } + } + + assert( false ); + + return MStatus::kFailure; +} + +//============================================================================= +// WBSetPrefixCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBSetPrefixCmd::creator() +{ + return new WBSetPrefixCmd(); +} + +//============================================================================= +// WBSetPrefixCmd::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus WBSetPrefixCmd::doIt( const MArgList& args ) +{ + assert( args.length() == 0 ); + + MUI::PopupDialogue( IDD_DIALOG2, &SetPrefixLocatorNameCallBack ); + + return MStatus::kSuccess; +} + +//============================================================================= +// WBSnapLocatorCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBSnapLocatorCmd::creator() +{ + return new WBSnapLocatorCmd(); +} + +//============================================================================= +// WBSnapLocatorCmd::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: MStatus +// +//============================================================================= +MStatus WBSnapLocatorCmd::doIt( const MArgList& args ) +{ + assert( args.length() == 1 ); + + double OFFSET = 0; + + args.get( 0, OFFSET ); + + OFFSET *= WBConstants::Scale; + + MSelectionList list; + MGlobal::getActiveSelectionList( list ); + + MItSelectionList i( list ); + + MFnDagNode fnDagNode; + MDagPath dagPath; + MItDag itDag; + MObject obj; + MDagPath objDagPath; + MObject childObj; + + //For all selected objects. + for ( ; !i.isDone(); i.next() ) + { + i.getDagPath( dagPath ); + + itDag.reset( dagPath, MItDag::kBreadthFirst, MFn::kTransform ); + + for ( ; !itDag.isDone() && itDag.depth() < 2; itDag.next() ) + { + obj = itDag.item(); + fnDagNode.setObject( obj ); + + const char* objName = fnDagNode.name().asChar(); + const char* objTypeName = fnDagNode.typeName().asChar(); + + int childCount = fnDagNode.childCount(); + + int whichChild; + + for ( whichChild = 0; whichChild < childCount; ++whichChild ) + { + childObj = fnDagNode.child( whichChild ); + fnDagNode.setObject( childObj ); + + const char* childObjName = fnDagNode.name().asChar(); + const char* childObjTypeName = fnDagNode.typeName().asChar(); + + //Find a mesh below me and move my pivot to the intersection. + itDag.getPath( objDagPath ); + MFnTransform fnTrans( objDagPath ); + + + MVector pos = fnTrans.translation( MSpace::kWorld ); + MPoint rotate = fnTrans.rotatePivot( MSpace::kWorld ); + MVector rayDir( 0, -1.0, 0 ); + + MItDag meshIt( MItDag::kDepthFirst, MFn::kMesh ); + MDagPath meshDagPath; + MPointArray intersectPoints; + + bool found = false; + + for ( ; !meshIt.isDone(); meshIt.next() ) + { + meshIt.getPath( meshDagPath ); + MFnMesh mesh( meshDagPath ); + + mesh.intersect( rotate, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + if ( intersectPoints.length() > 0 ) + { + MVector diff( intersectPoints[ 0 ] - rotate ); + diff.y += OFFSET; + + fnTrans.translateBy( diff, MSpace::kWorld ); + + found = true; + + break; + } + } + + if ( !found ) + { + //Look up + MPoint rotate = fnTrans.rotatePivot( MSpace::kWorld ); + MVector rayDir( 0, 1.0, 0 ); + + MItDag meshIt( MItDag::kDepthFirst, MFn::kMesh ); + MDagPath meshDagPath; + MPointArray intersectPoints; + + for ( ; !meshIt.isDone(); meshIt.next() ) + { + meshIt.getPath( meshDagPath ); + MFnMesh mesh( meshDagPath ); + + mesh.intersect( rotate, rayDir, intersectPoints, 0.001f, MSpace::kWorld ); + + if ( intersectPoints.length() > 0 ) + { + MVector diff( intersectPoints[ 0 ] - rotate ); + diff.y -= OFFSET; + + fnTrans.translateBy( diff, MSpace::kWorld ); + + found = true; + + break; + } + } + } + + if ( !found ) + { + MString errorMsg( "The object: " ); + errorMsg += fnTrans.name(); + errorMsg += MString( " has no mesh below it.\nNo snapping done on it." ); + + MUI::InfoDialog( errorMsg.asChar() ); + } + } + } + } + + return MStatus::kSuccess; +} + +//============================================================================= +// WBSplineCompleteCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBSplineCompleteCmd::creator() +{ + return new WBSplineCompleteCmd(); +} + +//============================================================================= +// WBSplineCompleteCmd::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: WBSplineCompleteCmd +// +//============================================================================= +MStatus WBSplineCompleteCmd::doIt( const MArgList& args ) +{ + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.length() == 0 ) + { + return MStatus::kSuccess; + } + + MObject spline; + selectionList.getDependNode( 0, spline ); + + MStatus status; + + MFnTransform fnTransform( spline, &status ); + assert( status ); + + if ( status ) + { + MDagPath dagPath; + selectionList.getDagPath(0, dagPath); + dagPath.extendToShape(); + + MFnNurbsCurve fnNurbs( dagPath, &status ); + assert( status ); + + int numCvs = fnNurbs.numCVs(); + assert( numCvs ); + + MPoint cv; + MBoundingBox bBox; + int i; + for ( i = 0; i < numCvs; ++i ) + { + fnNurbs.getCV( i, cv, MSpace::kWorld ); + bBox.expand( cv ); + } + + MPoint halfway = bBox.center(); + + double radius = bBox.height() > bBox.width() ? bBox.height() : bBox.width(); + radius = radius > bBox.depth() ? radius : bBox.depth(); + radius = radius / WBConstants::Scale / 2.0; + + MFnDependencyNode fnDepNodeSpline( fnTransform.child(0) ); + + MUI::PopupDialogue( IDD_DIALOG1, SplineNameCallBack ); + + //Get the new name of the spline... + const char* name = WBSpline::GetName(); + MString newName( name ); + + MObject locator, triggerVolume, transform; + + //Create the spline locator + MExt::CreateNode( locator, + transform, + MString( SplineLocatorNode::stringId ), + &newName ); + + MExt::SetWorldPosition( halfway, locator ); + + WorldBuilder::AddChild( locator ); + + //Name the spline + MString splineName = newName + MString("Spline"); + fnTransform.setName( splineName ); + WorldBuilder::AddChild( fnDepNodeSpline.object() ); + + //Adding an extra attribute to the spline!! + MFnMessageAttribute msgAttr; + MObject locatorAttr; + locatorAttr = msgAttr.create( "locator", "l", &status ); + assert( status ); + + msgAttr.setReadable( true ); + msgAttr.setWritable( false ); + + fnDepNodeSpline.addAttribute( locatorAttr ); + + //Connect the Spline to the Locator. + MExt::Connect( fnDepNodeSpline.object(), "locator", locator, SplineLocatorNode::SPLINE_NAME_LONG ); + + //Create the Trigger Volume + MString triggerName = newName + MString( "Trigger" ); + + MExt::CreateNode( triggerVolume, + transform, + MString( TriggerVolumeNode::stringId ), + &triggerName ); + + MExt::SetWorldPosition( halfway, triggerVolume ); + + MFnTransform fnTransform( transform ); + const double scale[3] = { radius, radius, radius }; + + //Scale this bad-boy! + fnTransform.setScale( scale ); + + //Connect the Trigger Volume to the Locator. + MExt::Connect( triggerVolume, TriggerVolumeNode::LOCATOR_NAME_LONG, locator, SplineLocatorNode::TRIGGERS_NAME_LONG ); + + WorldBuilder::AddChild( triggerVolume ); + + //Create the railcam + MObject railLocator; + MString railName = newName + MString( "RailCam" ); + MExt::CreateNode( railLocator, + transform, + MString( RailCamLocatorNode::stringId ), + &railName ); + + fnNurbs.getCV( 0, cv, MSpace::kWorld ); + MExt::SetWorldPosition( cv, railLocator ); + MExt::Connect( railLocator, "message", locator, SplineLocatorNode::CAMERA_NAME_LONG ); + MExt::Connect( fnDepNodeSpline.object(), "message", railLocator, RailCamLocatorNode::RAIL_NAME_LONG ); + + WorldBuilder::AddChild( railLocator ); + } + + return MStatus::kSuccess; +} + +//============================================================================= +// WBCoinSplineCompleteCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBCoinSplineCompleteCmd::creator() +{ + return new WBCoinSplineCompleteCmd(); +} + +//============================================================================= +// WBCoinSplineCompleteCmd::doIt +//============================================================================= +// Description: Comment +// +// Parameters: ( const MArgList& args ) +// +// Return: WBCoinSplineCompleteCmd +// +//============================================================================= +MStatus WBCoinSplineCompleteCmd::doIt( const MArgList& args ) +{ + MSelectionList selectionList; + + MGlobal::getActiveSelectionList( selectionList ); + + if ( selectionList.length() == 0 ) + { + return MStatus::kSuccess; + } + + + MObject spline; + selectionList.getDependNode( 0, spline ); + + MStatus status; + + MFnTransform fnTransform( spline, &status ); + assert( status ); + + if ( status ) + { + MDagPath dagPath; + selectionList.getDagPath(0, dagPath); + dagPath.extendToShape(); + + MFnNurbsCurve fnNurbs( dagPath, &status ); + assert( status ); + + int numCvs = fnNurbs.numCVs(); + assert( numCvs ); + + MFnDependencyNode fnDepNodeSpline( fnTransform.child(0) ); + + MUI::PopupDialogue( IDD_DIALOG1, SplineNameCallBack ); + + //Get the new name of the spline... + const char* name = WBSpline::GetName(); + MString newName( name ); + + MObject locator, triggerVolume, transform; + + //Create the spline locator + MExt::CreateNode( locator, + transform, + MString( SplineLocatorNode::stringId ), + &newName ); + + MExt::SetWorldPosition( MPoint(0,0,0), locator ); + + //Set this locator to say that it is a coin locator + MFnDependencyNode fnNode( locator ); + fnNode.findPlug( SplineLocatorNode::sIsCoin ).setValue( true ); + + WorldBuilder::AddChild( locator ); + + //Name the spline + MString splineName = newName + MString("Spline"); + fnTransform.setName( splineName ); + WorldBuilder::AddChild( fnDepNodeSpline.object() ); + + //Adding an extra attribute to the spline!! + MFnMessageAttribute msgAttr; + MObject locatorAttr; + locatorAttr = msgAttr.create( "locator", "l", &status ); + assert( status ); + + msgAttr.setReadable( true ); + msgAttr.setWritable( false ); + + fnDepNodeSpline.addAttribute( locatorAttr ); + + //Add a num coins attribute to the spline + MFnNumericAttribute numAttr; + MObject numCoinAttr; + numCoinAttr = numAttr.create( "numCoins", "nc", MFnNumericData::kInt, 10, &status ); + assert( status ); + + numAttr.setReadable( true ); + numAttr.setWritable( true ); + + fnDepNodeSpline.addAttribute( numCoinAttr ); + + //Connect the Spline to the Locator. + MExt::Connect( fnDepNodeSpline.object(), "locator", locator, SplineLocatorNode::SPLINE_NAME_LONG ); + } + + return MStatus::kSuccess; +} + +//============================================================================= +// WBSelectObjectCmd::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* WBSelectObjectCmd::creator() +{ + return new WBSelectObjectCmd(); +} + +MStatus WBSelectObjectCmd::doIt( const MArgList& args ) +{ + assert( args.length() == 1 ); + + MString objName; + + args.get( 0, objName ); + + WorldBuilder::SetSelectedLocator( objName.asChar() ); + + return MStatus::kSuccess; +}
\ No newline at end of file diff --git a/tools/worldbuilder/code/commands/worldbuildercommands.h b/tools/worldbuilder/code/commands/worldbuildercommands.h new file mode 100644 index 0000000..7228185 --- /dev/null +++ b/tools/worldbuilder/code/commands/worldbuildercommands.h @@ -0,0 +1,90 @@ +#ifndef WORLD_BUILDER_COMMANDS_H +#define WORLD_BUILDER_COMMANDS_H + +#include "precompiled/PCH.h" + +class WBChangeDisplayCommand : public MPxCommand +{ +public: + WBChangeDisplayCommand() {}; + ~WBChangeDisplayCommand() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBSetLocatorTypeCmd : public MPxCommand +{ +public: + WBSetLocatorTypeCmd() {}; + virtual ~WBSetLocatorTypeCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBSetPrefixCmd : public MPxCommand +{ +public: + WBSetPrefixCmd() {}; + virtual ~WBSetPrefixCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBSnapLocatorCmd : public MPxCommand +{ +public: + WBSnapLocatorCmd() {}; + virtual ~WBSnapLocatorCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBSplineCompleteCmd : public MPxCommand +{ +public: + WBSplineCompleteCmd() {}; + virtual ~WBSplineCompleteCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBCoinSplineCompleteCmd : public MPxCommand +{ +public: + WBCoinSplineCompleteCmd() {}; + virtual ~WBCoinSplineCompleteCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +class WBSelectObjectCmd : public MPxCommand +{ +public: + WBSelectObjectCmd() {}; + virtual ~WBSelectObjectCmd() {}; + + static void* creator(); + virtual MStatus doIt( const MArgList& args ); + + static const char* stringId; +}; + +#endif //WORLD_BUILDER_COMMANDS_H
\ No newline at end of file diff --git a/tools/worldbuilder/code/contexts/locatorcontext.cpp b/tools/worldbuilder/code/contexts/locatorcontext.cpp new file mode 100644 index 0000000..7c1ff0a --- /dev/null +++ b/tools/worldbuilder/code/contexts/locatorcontext.cpp @@ -0,0 +1,887 @@ +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <math.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +#include "Locatorcontext.h" +#include "nodes/EventLocatorNode.h" +#include "nodes/ScriptLocatorNode.h" +#include "nodes/GenericLocatorNode.h" +#include "nodes/CarStartLocatorNode.h" +#include "nodes/TriggerVolumeNode.h" +#include "nodes/zoneeventlocatornode.h" +#include "nodes/occlusionlocatornode.h" +#include "nodes/interiorentrancelocatornode.h" +#include "nodes/directionallocatornode.h" +#include "nodes/ActionEventLocatorNode.h" +#include "nodes/FOVLocatorNode.h" +#include "nodes/BreakableCameraLocatorNode.h" +#include "nodes/StaticCameraLocatorNode.h" +#include "nodes/PedGroupLocator.h" +#include "utility/mext.h" +#include "utility/mui.h" +#include "main/worldbuilder.h" +#include "main/constants.h" + +#include "resources/resource.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +const short OFFSET = 10; +const double SCALE_FACTOR = 0.002; +const double DEFAULT_SCALE = 5; + +const char* LocatorContext::stringId = "LocatorContext"; + +LocatorType::Type LocatorContext::mLastLocatorType = LocatorType::NUM_TYPES; +LocatorEvent::Event LocatorContext::mLastEvent = LocatorEvent::CHECK_POINT; + +//============================================================================== +// LocatorContextCmd::LocatorContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: LocatorContextCmd +// +//============================================================================== +LocatorContextCmd::LocatorContextCmd() +{ +} + +//============================================================================== +// LocatorContextCmd::~LocatorContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: LocatorContextCmd +// +//============================================================================== +LocatorContextCmd::~LocatorContextCmd() +{ +} + +//----------------------------------------------------------------------------- +// c r e a t o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* LocatorContextCmd::creator() +{ + return new LocatorContextCmd(); +} + +//----------------------------------------------------------------------------- +// m a k e O b j +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPxContext* LocatorContextCmd::makeObj() +{ + return new LocatorContext(); +} + +//============================================================================== +// LocatorContext::LocatorContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: LocatorContext +// +//============================================================================== +LocatorContext::LocatorContext() : + mXCurrent( 0 ), + mYCurrent( 0 ) +{ + SetHelpString(); + + setTitleString( "Locator Creation Tool" ); +} + +//============================================================================== +// LocatorContext::~LocatorContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: LocatorContext +// +//============================================================================== +LocatorContext::~LocatorContext() +{ +} + +//============================================================================== +// LocatorContext::abortAction +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void LocatorContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//----------------------------------------------------------------------------- +// c o m p l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void LocatorContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//----------------------------------------------------------------------------- +// d e l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void LocatorContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//----------------------------------------------------------------------------- +// d o D r a g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus LocatorContext::doDrag( MEvent& event ) +{ + + event.getPosition( mXDrag, mYDrag ); + ProcessState( MOUSEDRAG ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o E n t e r R e g i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus LocatorContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o H o l d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus LocatorContext::doHold( MEvent& event ) +{ + MStatus status = MS::kSuccess; + return status; +} + +//----------------------------------------------------------------------------- +// d o P r e s s +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus LocatorContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o R e l e a s e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus LocatorContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// t o o l O f f C l e a n u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void LocatorContext::toolOffCleanup() +{ + if ( mLocatorTransform != MObject::kNullObj ) + { + mLocator = MObject::kNullObj; + mLocatorTransform = MObject::kNullObj; + } +} + +//----------------------------------------------------------------------------- +// t o o l O n S e t u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void LocatorContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); +} + +//----------------------------------------------------------------------------- +// +// P R I V A T E M E M B E R S +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// p r o c e s s S t a t e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void LocatorContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + } + break; + case MOUSEDRAG: + { + } + break; + case BUTTONUP: + { + InitLocator(); + } + break; + case COMPLETED: + case ABORTED: + { + if ( mLocatorTransform != MObject::kNullObj ) + { + mLocator = MObject::kNullObj; + mLocatorTransform = MObject::kNullObj; + } + } + break; + case DELETED: + { + if ( mLocatorTransform != MObject::kNullObj ) + { + MGlobal::deleteNode( mLocator ); + MGlobal::deleteNode( mLocatorTransform ); + } + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================== +// LocatorContext::SetHelpString +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void LocatorContext::SetHelpString() +{ + mHelp = "Click to create Locator."; + + setHelpString( mHelp ); +} + +//============================================================================== +// LocatorContext::InitLocator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void LocatorContext::InitLocator() +{ + //Get the mesh below the clicked point and find it's y height. + MPoint intersectPoint; + + if ( MExt::MeshClickIntersect( mXCurrent, mYCurrent, intersectPoint ) ) + { + bool needsTriggerVolume = false; + bool lockTriggerRotation = false; + MString newName; + + //What kind of locator do we want? + switch ( WorldBuilder::GetLocatorType() ) + { + case LocatorType::EVENT: + { + MUI::PopupDialogue( IDD_DIALOG1, &EventLocatorNameCallBack ); + + newName = MString( EventLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { +// if ( mLastLocatorType == LocatorType::EVENT ) +// { +// if ( !mLocator.isNull() ) +// { +// //Make this the same kind of event as the last one +// MFnDependencyNode fnNode( mLocator ); +// fnNode.findPlug( EventLocatorNode::sEvent ).getValue( mLastEvent ); +// } +// } +// else + { + mLastLocatorType = LocatorType::EVENT; + } + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( EventLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + + MFnDependencyNode fnNode( mLocator ); + fnNode.findPlug( EventLocatorNode::sEvent ).setValue( mLastEvent ); + + //Lock out the x and z axis on the transform. +// MFnDependencyNode fnDepNode( mLocatorTransform ); +// fnDepNode.findPlug( MString("rx") ).setLocked( true ); +// fnDepNode.findPlug( MString("ry") ).setLocked( true ); +// fnDepNode.findPlug( MString("rz") ).setLocked( true ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::SCRIPT: + { + mLastLocatorType = LocatorType::SCRIPT; + + MUI::PopupDialogue( IDD_DIALOG5, &ScriptLocatorNameCallBack ); + + newName = MString( ScriptLocatorNode::GetNewName() ); + + const char* script = ScriptLocatorNode::GetScriptName(); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( ScriptLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + + fnDepNode.setObject( mLocator ); + fnDepNode.findPlug( ScriptLocatorNode::sScript ).setValue( script ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::GENERIC: + { + mLastLocatorType = LocatorType::GENERIC; + + MUI::PopupDialogue( IDD_DIALOG1, &GenericLocatorNameCallBack ); + + newName = MString( GenericLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( GenericLocatorNode::stringId ), + &newName ); + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::CAR_START: + { + mLastLocatorType = LocatorType::CAR_START; + + MUI::PopupDialogue( IDD_DIALOG1, &CarStartLocatorNameCallBack ); + + newName = MString( CarStartLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( CarStartLocatorNode::stringId ), + &newName ); + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::DYNAMIC_ZONE: + { + mLastLocatorType = LocatorType::DYNAMIC_ZONE; + + MUI::PopupDialogue( IDD_DIALOG3, &ZoneEventLocatorNameCallBack ); + + newName = MString( ZoneEventLocatorNode::GetNewName() ); + + const char* zone = ZoneEventLocatorNode::GetZoneName(); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( ZoneEventLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + + fnDepNode.setObject( mLocator ); + fnDepNode.findPlug( ZoneEventLocatorNode::sZone ).setValue( zone ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::OCCLUSION: + { + mLastLocatorType = LocatorType::OCCLUSION; + + MUI::PopupDialogue( IDD_DIALOG1, &OcclusionLocatorNameCallBack ); + + newName = MString( OcclusionLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( OcclusionLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + + fnDepNode.setObject( mLocator ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::INTERIOR_ENTRANCE: + { + mLastLocatorType = LocatorType::INTERIOR_ENTRANCE; + + MUI::PopupDialogue( IDD_DIALOG3, &InteriorEntranceLocatorNameCallBack ); + + newName = MString( InteriorEntranceLocatorNode::GetNewName() ); + + const char* zone = InteriorEntranceLocatorNode::GetZoneName(); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( InteriorEntranceLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + +// //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); +// fnDepNode.findPlug( MString("rx") ).setLocked( true ); +// fnDepNode.findPlug( MString("ry") ).setLocked( true ); +// fnDepNode.findPlug( MString("rz") ).setLocked( true ); + + fnDepNode.setObject( mLocator ); + fnDepNode.findPlug( InteriorEntranceLocatorNode::sZone ).setValue( zone ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::DIRECTIONAL: + { + mLastLocatorType = LocatorType::DIRECTIONAL; + + MUI::PopupDialogue( IDD_DIALOG1, &DirectionalLocatorNameCallBack ); + + newName = MString( DirectionalLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( DirectionalLocatorNode::stringId ), + &newName ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::ACTION: + { + mLastLocatorType = LocatorType::ACTION; + + MUI::PopupDialogue( IDD_DIALOG4, &ActionEventLocatorNameCallBack ); + + newName = MString( ActionEventLocatorNode::GetNewName() ); + MString objName = ActionEventLocatorNode::GetNewObj(); + MString jointName = ActionEventLocatorNode::GetNewJoint(); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( ActionEventLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + //fnDepNode.findPlug( MString("rx") ).setLocked( true ); + //fnDepNode.findPlug( MString("ry") ).setLocked( true ); + //fnDepNode.findPlug( MString("rz") ).setLocked( true ); + + fnDepNode.setObject( mLocator ); + fnDepNode.findPlug( ActionEventLocatorNode::sObject ).setValue( objName ); + fnDepNode.findPlug( ActionEventLocatorNode::sJoint ).setValue( jointName ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::FOV: + { + mLastLocatorType = LocatorType::FOV; + + MUI::PopupDialogue( IDD_DIALOG1, &FOVLocatorNameCallBack ); + + newName = MString( FOVLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( FOVLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::BREAKABLE_CAMERA: + { + mLastLocatorType = LocatorType::BREAKABLE_CAMERA; + + MUI::PopupDialogue( IDD_DIALOG1, &BreakableCameraLocatorNameCallBack ); + + newName = MString( BreakableCameraLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( BreakableCameraLocatorNode::stringId ), + &newName ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::STATIC_CAMERA: + { + mLastLocatorType = LocatorType::STATIC_CAMERA; + + MUI::PopupDialogue( IDD_DIALOG1, &StaticCameraLocatorNameCallBack ); + + newName = MString( StaticCameraLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( StaticCameraLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + case LocatorType::PED_GROUP: + { + mLastLocatorType = LocatorType::PED_GROUP; + + MUI::PopupDialogue( IDD_DIALOG1, &PedGroupLocatorNameCallBack ); + + newName = MString( PedGroupLocatorNode::GetNewName() ); + + if ( newName.length() > 0 ) + { + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( PedGroupLocatorNode::stringId ), + &newName ); + + needsTriggerVolume = true; + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + break; + default: + assert( false ); + break; + } + + assert( !mLocator.isNull() ); + + MExt::SetWorldPosition( intersectPoint, mLocator ); + + if ( needsTriggerVolume ) + { + //Create and connect a trigger volume to this node. + MObject tv; + MObject tvt; + + MString name( newName ); + name += MString( "Trigger" ); + + MExt::CreateNode( tv, + tvt, + MString( TriggerVolumeNode::stringId ), + &name ); + + MExt::SetWorldPosition( intersectPoint, tv ); + + MFnTransform fnTransform( tvt ); + const double scale[3] = { DEFAULT_SCALE, DEFAULT_SCALE, DEFAULT_SCALE }; + + //Scale this bad-boy! + fnTransform.setScale( scale ); + + if ( lockTriggerRotation ) + { + fnTransform.findPlug( MString( "rx" ) ).setLocked( true ); + fnTransform.findPlug( MString( "ry" ) ).setLocked( true ); + fnTransform.findPlug( MString( "rz" ) ).setLocked( true ); + } + + //Connect the Trigger Volume to the Locator. + MExt::Connect( tv, "locator", mLocator, "triggers" ); + + WorldBuilder::AddChild( tv ); + } + + WorldBuilder::AddChild( mLocator ); + + } + +DIE: + MGlobal::clearSelectionList(); +} diff --git a/tools/worldbuilder/code/contexts/locatorcontext.h b/tools/worldbuilder/code/contexts/locatorcontext.h new file mode 100644 index 0000000..a785b8c --- /dev/null +++ b/tools/worldbuilder/code/contexts/locatorcontext.h @@ -0,0 +1,86 @@ +#include "precompiled/PCH.h" + +#ifndef LOCATOR_CONTEXT +#define LOCATOR_CONTEXT + +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <..\..\..\game\code\meta\locatortypes.h> +#include <..\..\..\game\code\meta\locatorevents.h> + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//----------------------------------------------------------------------------- +// +// L o c a t o r C o n t e x t +// +//----------------------------------------------------------------------------- +class LocatorContext : public MPxContext +{ + public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + + LocatorContext(); + virtual ~LocatorContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& ); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& ); + virtual MStatus doDrag( MEvent& ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + + private: + void ProcessState( Stimulus stimulus ); + void SetHelpString(); + void InitLocator(); + + MString mHelp; + + short mXCurrent, mYCurrent; + short mXDrag, mYDrag; + MObject mLocator; + MObject mLocatorTransform; + + static LocatorType::Type mLastLocatorType; + static LocatorEvent::Event mLastEvent; +}; + +//----------------------------------------------------------------------------- +// +// I n t e r s e c t i o n C o n t e x t C m d +// +//----------------------------------------------------------------------------- +class LocatorContextCmd : public MPxContextCommand +{ + public: + LocatorContextCmd(); + virtual ~LocatorContextCmd(); + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +#endif diff --git a/tools/worldbuilder/code/contexts/triggercontext.cpp b/tools/worldbuilder/code/contexts/triggercontext.cpp new file mode 100644 index 0000000..53c195e --- /dev/null +++ b/tools/worldbuilder/code/contexts/triggercontext.cpp @@ -0,0 +1,488 @@ +//---------------------------------------- +// System Includes +//---------------------------------------- +#include <math.h> + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include <nodes/triggervolumenode.h> +#include <nodes/occlusionlocatornode.h> +#include "triggercontext.h" +#include "utility/mext.h" +#include "utility/mui.h" +#include "main/worldbuilder.h" +#include "main/constants.h" + +#include "resources/resource.h" + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +const short OFFSET = 10; +const double SCALE_FACTOR = 0.002; +const double DEFAULT_SCALE = 25; + +const char* TriggerContext::stringId = "TriggerContext"; + +//============================================================================== +// TriggerContextCmd::TriggerContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TriggerContextCmd +// +//============================================================================== +TriggerContextCmd::TriggerContextCmd() +{ +} + +//============================================================================== +// TriggerContextCmd::~TriggerContextCmd +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TriggerContextCmd +// +//============================================================================== +TriggerContextCmd::~TriggerContextCmd() +{ +} + +//----------------------------------------------------------------------------- +// c r e a t o r +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void* TriggerContextCmd::creator() +{ + return new TriggerContextCmd(); +} + +//----------------------------------------------------------------------------- +// m a k e O b j +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MPxContext* TriggerContextCmd::makeObj() +{ + return new TriggerContext(); +} + +//============================================================================== +// TriggerContext::TriggerContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TriggerContext +// +//============================================================================== +TriggerContext::TriggerContext() : + mXCurrent( 0 ), + mYCurrent( 0 ) +{ + SetHelpString(); + + setTitleString( "Trigger Creation Tool" ); +} + +//============================================================================== +// TriggerContext::~TriggerContext +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: TriggerContext +// +//============================================================================== +TriggerContext::~TriggerContext() +{ +} + +//============================================================================== +// TriggerContext::abortAction +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TriggerContext::abortAction() +{ + ProcessState( ABORTED ); +} + +//----------------------------------------------------------------------------- +// c o m p l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void TriggerContext::completeAction() +{ + ProcessState( COMPLETED ); +} + +//----------------------------------------------------------------------------- +// d e l e t e A c t i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void TriggerContext::deleteAction() +{ + ProcessState( DELETED ); +} + +//----------------------------------------------------------------------------- +// d o D r a g +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus TriggerContext::doDrag( MEvent& event ) +{ + + event.getPosition( mXDrag, mYDrag ); + ProcessState( MOUSEDRAG ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o E n t e r R e g i o n +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus TriggerContext::doEnterRegion( MEvent& event ) +{ + SetHelpString(); + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o H o l d +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus TriggerContext::doHold( MEvent& event ) +{ + MStatus status = MS::kSuccess; + return status; +} + +//----------------------------------------------------------------------------- +// d o P r e s s +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus TriggerContext::doPress( MEvent& event ) +{ + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONDOWN ); + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// d o R e l e a s e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +MStatus TriggerContext::doRelease( MEvent& event ) +{ + if ( event.mouseButton() == MEvent::kLeftMouse ) + { + event.getPosition( mXCurrent, mYCurrent ); + ProcessState( BUTTONUP ); + } + + return MS::kSuccess; +} + +//----------------------------------------------------------------------------- +// t o o l O f f C l e a n u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void TriggerContext::toolOffCleanup() +{ + if ( mLocatorTransform != MObject::kNullObj ) + { + mLocator = MObject::kNullObj; + mLocatorTransform = MObject::kNullObj; + } +} + +//----------------------------------------------------------------------------- +// t o o l O n S e t u p +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void TriggerContext::toolOnSetup( MEvent& event ) +{ + setCursor( MCursor::crossHairCursor ); +} + +//----------------------------------------------------------------------------- +// +// P R I V A T E M E M B E R S +// +//----------------------------------------------------------------------------- + + +//----------------------------------------------------------------------------- +// p r o c e s s S t a t e +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +void TriggerContext::ProcessState( Stimulus stimulus ) +{ + switch( stimulus ) + { + case BUTTONDOWN: + { + } + break; + case MOUSEDRAG: + { + } + break; + case BUTTONUP: + { + InitLocator(); + } + break; + case COMPLETED: + case ABORTED: + { + if ( mLocatorTransform != MObject::kNullObj ) + { + mLocator = MObject::kNullObj; + mLocatorTransform = MObject::kNullObj; + } + } + break; + case DELETED: + { + if ( mLocatorTransform != MObject::kNullObj ) + { + MGlobal::deleteNode( mLocator ); + MGlobal::deleteNode( mLocatorTransform ); + } + } + break; + default: + { + } + break; + } + + SetHelpString(); +} + +//============================================================================== +// TriggerContext::SetHelpString +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TriggerContext::SetHelpString() +{ + mHelp = "Click to create Locator."; + + setHelpString( mHelp ); +} + +//============================================================================== +// TriggerContext::InitLocator +//============================================================================== +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================== +void TriggerContext::InitLocator() +{ + //Get the mesh below the clicked point and find it's y height. + MPoint intersectPoint; + + if ( MExt::MeshClickIntersect( mXCurrent, mYCurrent, intersectPoint ) ) + { + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, MString( WorldBuilder::GetSelectedLocator() ) ); + + MFnDagNode fnDagNode( dagPath ); + + bool isOcclusionNode = false; + bool isVisibler = false; + + if ( fnDagNode.typeId() == OcclusionLocatorNode::id ) + { + isOcclusionNode = true; + + MString cmd( "IsVisibler" ); + + int result = 0; + MGlobal::executeCommand( cmd, result ); + isVisibler = (result == 1); + } + + MString selectedObjectName; + selectedObjectName = fnDagNode.name(); + + if ( selectedObjectName.length() > 0 ) + { + MString newName; + + if ( isOcclusionNode ) + { + if ( isVisibler ) + { + newName = MString("Vis") + selectedObjectName + MString("Trig"); + } + else + { + newName = MString("Occ") + selectedObjectName + MString("Trig"); + } + } + else + { + newName = selectedObjectName + MString("Trigger"); + } + + //TODO, parent this properly. + MExt::CreateNode( mLocator, + mLocatorTransform, + MString( TriggerVolumeNode::stringId ), + &newName ); + + + if ( isOcclusionNode ) + { + //Lock out the x and z axis on the transform. + MFnDependencyNode fnDepNode( mLocatorTransform ); + fnDepNode.findPlug( MString("rx") ).setLocked( true ); + fnDepNode.findPlug( MString("ry") ).setLocked( true ); + fnDepNode.findPlug( MString("rz") ).setLocked( true ); + } + + MExt::SetWorldPosition( intersectPoint, mLocator ); + + MFnTransform fnTransform( mLocatorTransform ); + const double scale[3] = { DEFAULT_SCALE, DEFAULT_SCALE, DEFAULT_SCALE }; + + //Scale this bad-boy! + fnTransform.setScale( scale ); + + + //Connect the Trigger Volume to the Locator. + MExt::Connect( mLocator, "locator", fnDagNode.object(), "triggers" ); + + WorldBuilder::AddChild( mLocator ); + } + else + { + goto DIE; //Die outta here. It's cancelled. + } + } + +DIE: + MGlobal::clearSelectionList(); +} diff --git a/tools/worldbuilder/code/contexts/triggercontext.h b/tools/worldbuilder/code/contexts/triggercontext.h new file mode 100644 index 0000000..169355d --- /dev/null +++ b/tools/worldbuilder/code/contexts/triggercontext.h @@ -0,0 +1,82 @@ +#include "precompiled/PCH.h" + +#ifndef TRIGGER_CONTEXT +#define TRIGGER_CONTEXT + +//---------------------------------------- +// System Includes +//---------------------------------------- + + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//----------------------------------------------------------------------------- +// +// T r i g g e r C o n t e x t +// +//----------------------------------------------------------------------------- +class TriggerContext : public MPxContext +{ + public: + + enum Stimulus // Maskable values. + { + BUTTONDOWN = 0x0001, + BUTTONUP = 0x0002, + MOUSEDRAG = 0x0004, + COMPLETED = 0x0008, + DELETED = 0x0010, + ABORTED = 0x0020 + }; + + + TriggerContext(); + virtual ~TriggerContext(); + + static const char* stringId; + + virtual void toolOnSetup( MEvent& ); + virtual void toolOffCleanup(); + virtual MStatus doPress( MEvent& ); + virtual MStatus doDrag( MEvent& ); + virtual MStatus doRelease( MEvent& event ); + virtual MStatus doHold( MEvent& event ); + virtual MStatus doEnterRegion( MEvent& event ); + virtual void deleteAction(); + virtual void completeAction(); + virtual void abortAction(); + + private: + void ProcessState( Stimulus stimulus ); + void SetHelpString(); + void InitLocator(); + + MString mHelp; + + short mXCurrent, mYCurrent; + short mXDrag, mYDrag; + MObject mLocator; + MObject mLocatorTransform; +}; + +//----------------------------------------------------------------------------- +// +// T r i g g e r C o n t e x t C m d +// +//----------------------------------------------------------------------------- +class TriggerContextCmd : public MPxContextCommand +{ + public: + TriggerContextCmd(); + virtual ~TriggerContextCmd(); + + static void* creator(); + + virtual MPxContext* makeObj(); + + private: +}; + +#endif //TRIGGER_CONTEXT diff --git a/tools/worldbuilder/code/gameengine/gameengine.cpp b/tools/worldbuilder/code/gameengine/gameengine.cpp new file mode 100644 index 0000000..6aedada --- /dev/null +++ b/tools/worldbuilder/code/gameengine/gameengine.cpp @@ -0,0 +1,749 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: GameEngine.cpp +// +// Description: Implement GameEngine +// +// History: 19/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== + +#ifdef WORLD_BUILDER +#include "main/toolhack.h" +#endif + +#include <assert.h> +#include <tlmatrix.hpp> +#include <tlpoint.hpp> +#include <p3d/pointcamera.hpp> + +//======================================== +// Project Includes +//======================================== +#include "GameEngine.h" +#include "nodes/railcamlocatornode.h" +#include "nodes/staticcameralocatornode.h" +#include "nodes/fovlocatornode.h" +#include "nodes/splinelocatornode.h" +#include "nodes/triggervolumenode.h" +#include "nodes/staticcameralocatornode.h" +#include "..\..\..\game\code\meta\recttriggervolume.h" +#include "..\..\..\game\code\meta\spheretriggervolume.h" +#include "..\..\..\game\code\meta\triggervolume.h" +#include "utility\mext.h" +#include "utility\glext.h" +#include "main\constants.h" +#include "wbcamtarget.h" + +#include "..\..\..\game\code\camera\railcam.h" +#include "..\..\..\game\code\camera\staticcam.h" +#include "utility/transformmatrix.h" + +#include <radtime.hpp> + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +GameEngine* GameEngine::mInstance = NULL; + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================= +// GameEngine::CreateInstance +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void GameEngine::CreateInstance() +{ + assert( mInstance == NULL ); + + mInstance = new GameEngine(); +} + +//============================================================================= +// GameEngine::DestroyInstance +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void GameEngine::DestroyInstance() +{ + assert( mInstance ); + + delete mInstance; + mInstance = NULL; +} + +//============================================================================= +// GameEngine::GetInstance +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: GameEngine +// +//============================================================================= +GameEngine* GameEngine::GetInstance() +{ + return mInstance; +} + +//============================================================================= +// GameEngine::UpdateRailCam +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& railCam ) +// +// Return: void +// +//============================================================================= +void GameEngine::UpdateRailCam( MObject& railCamObj ) +{ + MStatus status; + + MFnDependencyNode fnDepNode ( railCamObj ); + + MPlug activePlug = fnDepNode.findPlug( RailCamLocatorNode::sActive, &status ); + assert( status ); + + bool active = false; + activePlug.getValue( active ); + + //Test to see if this is active. + if ( active ) + { + MString targetName; + fnDepNode.findPlug( RailCamLocatorNode::sTarget, &status ).getValue( targetName ); + assert( status ); + + //Test to see if this has a target... + if ( targetName.length() != 0 ) + { + MDagPath targetPath; + MObject targetObj; + if ( !MExt::FindDagNodeByName( &targetPath, targetName ) ) + { + //The target does not exist... + return; + } + + targetObj = targetPath.node(); + + RailCam* railCam = dynamic_cast<RailCamLocatorNode*>(fnDepNode.userNode())->GetRailCam(); + assert( railCam ); + + WBCamTarget* target = dynamic_cast<RailCamLocatorNode*>(fnDepNode.userNode())->GetTarget(); + assert( target ); + + target->SetTarget( targetObj ); + + rmt::Vector position; + target->GetPosition( &position ); + + //Get the spline locator (it has the triggers) + MPlug railPlug = fnDepNode.findPlug( MString( "message" ), &status ); + assert( status ); + + MPlugArray targets; + railPlug.connectedTo( targets, false, true, &status ); + assert( status ); + + assert( targets.length() == 1 ); + if ( targets.length() != 1 ) + { + return; + } + + MObject splineLoc = targets[0].node(); + + MFnDependencyNode splineFNDepNode( splineLoc ); + MPlug triggersPlug = splineFNDepNode.findPlug( SplineLocatorNode::sTriggers, &status ); + assert( status ); + + MPlugArray sources; + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + //Test to see if the target is in a trigger volume for this + //Test against all triggers... + MFnDependencyNode triggerFNDepNode( sources[i].node() ); + int type = 0; + triggerFNDepNode.findPlug( TriggerVolumeNode::sType, &status ).getValue( type ); + assert( status ); + + bool inside = false; + + tlMatrix mat; + tlPoint scale; + TriggerVolumeNode::GetScaleAndMatrix( sources[i].node(), mat, scale ); + + switch ( type ) + { + case TriggerVolumeNode::RECTANGLE: + { + RectTriggerVolume* trigVol = new RectTriggerVolume( mat.GetRow( 3 ), + mat.GetRow( 0 ), + mat.GetRow( 1 ), + mat.GetRow( 2 ), + scale.x, + scale.y, + scale.z ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + case TriggerVolumeNode::SPHERE: + { + SphereTriggerVolume* trigVol = new SphereTriggerVolume( mat.GetRow( 3 ), scale.x ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + default: + assert( false ); + } + + if ( inside ) + { + //If the object is in a trigger volume update the camera and set + //the new position of the railCam + + //We need to give it the splinecurve. + MPlug splineCurvePlug = fnDepNode.findPlug( RailCamLocatorNode::sRail, &status ); + assert( status ); + + MPlugArray splines; + splineCurvePlug.connectedTo( splines, true, false, &status ); + assert( status ); + + assert( splines.length() == 1 ); + if ( splines.length() != 1 ) + { + //Something has deleted the spline. + return; + } + + MFnDependencyNode splineCurveFNDepNode( splines[0].node() ); + + MDagPath splineCurvePath; + bool found = MExt::FindDagNodeByName( &splineCurvePath, splineCurveFNDepNode.name() ); + assert( found ); + + MFnNurbsCurve fnNurbsCurve( splineCurvePath, &status ); + assert( status ); + + MPointArray cvs; + fnNurbsCurve.getCVs( cvs, MSpace::kWorld ); + + railCam->SetNumCVs( cvs.length() ); + + unsigned int cvCount; + for ( cvCount = 0; cvCount < cvs.length(); ++cvCount ) + { + float x, y, z; + + x = cvs[cvCount].x / WBConstants::Scale; + y = cvs[cvCount].y / WBConstants::Scale; + z = -cvs[cvCount].z / WBConstants::Scale; + + rmt::Vector point( x, y, z ); + + railCam->SetVertex( cvCount, point ); + } + + railCam->SetTarget( target ); + + + //Test for FOV changes. + UpdateFOV( railCam, position ); + + UpdateRailSettings( railCam, railCamObj ); + + railCam->Update( 16 ); + + rmt::Vector newPos; + railCam->GetCamera()->GetPosition( &newPos ); + rmt::Vector newTarg; + railCam->GetCamera()->GetTarget( &newTarg ); + rmt::Vector newVUp; + railCam->GetCamera()->GetVUp( &newVUp ); + float fov, aspect; + railCam->GetCamera()->GetFOV( &fov, &aspect ); + + mMayaCam->Set( newPos, newTarg, newVUp, rmt::RadianToDeg(fov) ); + + MPoint newPoint; + newPoint.x = newPos.x * WBConstants::Scale; + newPoint.y = newPos.y * WBConstants::Scale; + newPoint.z = -newPos.z * WBConstants::Scale; + + MExt::SetWorldPosition( newPoint, railCamObj ); + + //Get out of the loop. + break; + } + } + } + } +} + + +//============================================================================= +// GameEngine::UpdateStaticCam +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& staticCam ) +// +// Return: void +// +//============================================================================= +void GameEngine::UpdateStaticCam( MObject& staticCamObj ) +{ + MStatus status; + + MFnDependencyNode fnDepNode ( staticCamObj ); + + MPlug activePlug = fnDepNode.findPlug( StaticCameraLocatorNode::sActive, &status ); + assert( status ); + + bool active = false; + activePlug.getValue( active ); + + //Test to see if this is active. + if ( active ) + { + bool tracking = false; + fnDepNode.findPlug( StaticCameraLocatorNode::sTracking, &status ).getValue( tracking ); + assert( status ); + + MString targetName; + fnDepNode.findPlug( StaticCameraLocatorNode::sTarget, &status ).getValue( targetName ); + assert( status ); + + //Test to see if this has a target... + if ( targetName.length() != 0 ) + { + MDagPath targetPath; + MObject targetObj; + if ( !MExt::FindDagNodeByName( &targetPath, targetName ) ) + { + //The target does not exist... + return; + } + + //Now we have a target to test for being in the cameras trigger volume + targetObj = targetPath.node(); + + StaticCam* staticCam = reinterpret_cast<StaticCameraLocatorNode*>(fnDepNode.userNode())->GetStaticCam(); + assert( staticCam ); + + WBCamTarget* target = reinterpret_cast<StaticCameraLocatorNode*>(fnDepNode.userNode())->GetTarget(); + assert( target ); + + target->SetTarget( targetObj ); + + rmt::Vector position; + target->GetPosition( &position ); + + //Test the trigger volumes + MPlug triggersPlug = fnDepNode.findPlug( StaticCameraLocatorNode::sTriggers, &status ); + assert( status ); + + MPlugArray sources, targets; + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + //Test to see if the target is in a trigger volume for this + //Test against all triggers... + MFnDependencyNode triggerFNDepNode( sources[i].node() ); + int type = 0; + triggerFNDepNode.findPlug( TriggerVolumeNode::sType, &status ).getValue( type ); + assert( status ); + + bool inside = false; + + tlMatrix mat; + tlPoint scale; + TriggerVolumeNode::GetScaleAndMatrix( sources[i].node(), mat, scale ); + + switch ( type ) + { + case TriggerVolumeNode::RECTANGLE: + { + RectTriggerVolume* trigVol = new RectTriggerVolume( mat.GetRow( 3 ), + mat.GetRow( 0 ), + mat.GetRow( 1 ), + mat.GetRow( 2 ), + scale.x, + scale.y, + scale.z ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + case TriggerVolumeNode::SPHERE: + { + SphereTriggerVolume* trigVol = new SphereTriggerVolume( mat.GetRow( 3 ), scale.x ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + default: + assert( false ); + } + + if ( inside ) + { + //If the object is in a trigger volume update the camera and set + //the new position of the static cam + + staticCam->SetTarget( target ); + + + //Test for FOV changes. + UpdateFOV( staticCam, position ); + + UpdateStaticCamSettings( staticCam, staticCamObj ); + + staticCam->Update( 16 ); + + rmt::Vector newPos; + staticCam->GetCamera()->GetPosition( &newPos ); + rmt::Vector newTarg; + staticCam->GetCamera()->GetTarget( &newTarg ); + rmt::Vector newVUp; + staticCam->GetCamera()->GetVUp( &newVUp ); + float fov, aspect; + staticCam->GetCamera()->GetFOV( &fov, &aspect ); + + mMayaCam->Set( newPos, newTarg, newVUp, rmt::RadianToDeg(fov) ); + + MPoint newPoint; + newPoint.x = newPos.x * WBConstants::Scale; + newPoint.y = newPos.y * WBConstants::Scale; + newPoint.z = -newPos.z * WBConstants::Scale; + + MExt::SetWorldPosition( newPoint, staticCamObj ); + + //Get out of the loop. + break; + } + } + } + } +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** + +//============================================================================== +// GameEngine::GameEngine +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +GameEngine::GameEngine() : + mTimeStart(0) +{ + mMayaCam = new MayaCamera(); +} + +//============================================================================== +// GameEngine::~GameEngine +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +GameEngine::~GameEngine() +{ + Init(); + + delete mMayaCam; +} + +void GameEngine::Init() +{ +} + +//============================================================================= +// GameEngine::UpdateRailSettings +//============================================================================= +// Description: Comment +// +// Parameters: ( RailCam* railCam, MObject obj ) +// +// Return: void +// +//============================================================================= +void GameEngine::UpdateRailSettings( RailCam* railCam, MObject obj ) +{ + MFnDependencyNode fnDepNode( obj ); + + int behav; + fnDepNode.findPlug( RailCamLocatorNode::sBehaviour).getValue( behav ); + railCam->SetBehaviour( (RailCam::Behaviour)(behav) ); + + float minRad; + fnDepNode.findPlug( RailCamLocatorNode::sMinRadius ).getValue( minRad ); + railCam->SetMinRadius( minRad ); + + float maxRad; + fnDepNode.findPlug( RailCamLocatorNode::sMaxRadius ).getValue( maxRad ); + railCam->SetMaxRadius( maxRad ); + + bool trackRail; + fnDepNode.findPlug( RailCamLocatorNode::sTrackRail ).getValue( trackRail ); + railCam->SetTrackRail( trackRail ); + + float trackDist; + fnDepNode.findPlug( RailCamLocatorNode::sTrackDist ).getValue( trackDist ); + railCam->SetTrackDist( trackDist ); + + bool reverse; + fnDepNode.findPlug( RailCamLocatorNode::sReverseSense ).getValue( reverse ); + railCam->SetReverseSense( reverse ); + + float fov; + fnDepNode.findPlug( RailCamLocatorNode::sFOV ).getValue( fov ); + railCam->SetFOV( rmt::DegToRadian(fov) ); + + float x, y, z; + fnDepNode.findPlug( RailCamLocatorNode::sFacingOffset ).child(0).getValue( x ); + fnDepNode.findPlug( RailCamLocatorNode::sFacingOffset ).child(1).getValue( y ); + fnDepNode.findPlug( RailCamLocatorNode::sFacingOffset ).child(2).getValue( z ); + railCam->SetTargetOffset( rmt::Vector( x, y, z ) ); + + //Same with axis play... TODO + + float posLag; + fnDepNode.findPlug( RailCamLocatorNode::sPositionLag ).getValue( posLag ); + railCam->SetPositionLag( posLag ); + + float targLag; + fnDepNode.findPlug( RailCamLocatorNode::sTargetLag ).getValue( targLag ); + railCam->SetTargetLag( targLag ); +} + +//============================================================================= +// GameEngine::UpdateStaticCamSettings +//============================================================================= +// Description: Comment +// +// Parameters: ( StaticCam* staticCam, MObject obj ) +// +// Return: void +// +//============================================================================= +void GameEngine::UpdateStaticCamSettings( StaticCam* staticCam, MObject obj ) +{ + MFnDependencyNode fnDepNode( obj ); + + float fov; + fnDepNode.findPlug( StaticCameraLocatorNode::sFOV ).getValue( fov ); + staticCam->SetFOV( rmt::DegToRadian(fov) ); + + float targLag; + fnDepNode.findPlug( StaticCameraLocatorNode::sTargetLag ).getValue( targLag ); + staticCam->SetTargetLag( targLag ); + + MPoint worldPos; + MExt::GetWorldPosition( &worldPos, obj ); + + rmt::Vector pos; + pos.x = worldPos.x / WBConstants::Scale; + pos.y = worldPos.y / WBConstants::Scale; + pos.z = -worldPos.z / WBConstants::Scale; + + staticCam->SetPosition( pos ); + + bool tracking = false; + fnDepNode.findPlug( StaticCameraLocatorNode::sTracking ).getValue( tracking ); + staticCam->SetTracking( tracking ); + + float x, y, z; + fnDepNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(0).getValue( x ); + fnDepNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(1).getValue( y ); + fnDepNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(2).getValue( z ); + + if ( tracking ) + { + staticCam->SetTargetOffset( rmt::Vector( x, y, z ) ); + } + else + { + //Figure out the transformation on the locator node and apply it to the offset. + MObject transform; + MFnDagNode fnDAGNode( obj ); + transform = fnDAGNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0]; + hmatrix.element[3][1]; + hmatrix.element[3][2]; + + if ( x == 0 && y == 0 && z == 0 ) + { + z = 1.0f; + } + + tlPoint offset( x, y, z ); + offset = VectorTransform( hmatrix, offset ); + + rmt::Vector targPos = pos; + targPos.Add( offset ); + staticCam->SetTargetOffset( targPos ); + } +} + +//============================================================================= +// GameEngine::UpdateFOV +//============================================================================= +// Description: Comment +// +// Parameters: ( SuperCam* cam, const rmt::Vector position ) +// +// Return: void +// +//============================================================================= +void GameEngine::UpdateFOV( SuperCam* cam, const rmt::Vector position ) +{ + MStatus status; + MItDag dagIt( MItDag::kDepthFirst, MFn::kLocator ); + + bool inside = false; + + while ( !dagIt.isDone() ) + { + MFnDependencyNode fnNode( dagIt.item() ); + if ( fnNode.typeId() == FOVLocatorNode::id ) + { + //This is a FOV locator, let's see if we're in it's trigger volume. + + MPlug triggersPlug = fnNode.findPlug( FOVLocatorNode::sTriggers, &status ); + assert( status ); + + MPlugArray sources, targets; + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + //Test to see if the target is in a trigger volume for this + //Test against all triggers... + MFnDependencyNode triggerFNDepNode( sources[i].node() ); + int type = 0; + triggerFNDepNode.findPlug( TriggerVolumeNode::sType, &status ).getValue( type ); + assert( status ); + + tlMatrix mat; + tlPoint scale; + TriggerVolumeNode::GetScaleAndMatrix( sources[i].node(), mat, scale ); + + switch ( type ) + { + case TriggerVolumeNode::RECTANGLE: + { + RectTriggerVolume* trigVol = new RectTriggerVolume( mat.GetRow( 3 ), + mat.GetRow( 0 ), + mat.GetRow( 1 ), + mat.GetRow( 2 ), + scale.x, + scale.y, + scale.z ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + case TriggerVolumeNode::SPHERE: + { + SphereTriggerVolume* trigVol = new SphereTriggerVolume( mat.GetRow( 3 ), scale.x ); + + inside = trigVol->Contains( position ); + + trigVol->Release(); + } + break; + default: + assert( false ); + } + + if ( inside ) + { + float fov; + float time; + float rate; + fnNode.findPlug( FOVLocatorNode::sFOV ).getValue( fov ); + fnNode.findPlug( FOVLocatorNode::sTime ).getValue( time ); + fnNode.findPlug( FOVLocatorNode::sRate ).getValue( rate ); + + cam->SetFOVOverride( rmt::DegToRadian( fov ) ); + cam->OverrideFOV( true, time, rate ); + + break; + } + } + } + + dagIt.next(); + } + + if ( !inside ) + { + cam->OverrideFOV( false, 2000, 0.04f ); + } +} diff --git a/tools/worldbuilder/code/gameengine/gameengine.h b/tools/worldbuilder/code/gameengine/gameengine.h new file mode 100644 index 0000000..b3b3fa0 --- /dev/null +++ b/tools/worldbuilder/code/gameengine/gameengine.h @@ -0,0 +1,85 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: gameengine.h +// +// Description: Blahblahblah +// +// History: 19/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef GAMEENGINE_H +#define GAMEENGINE_H + +//======================================== +// Nested Includes +//======================================== +#include "main/toolhack.h" + +#include "precompiled/PCH.h" + +#include "mayacamera.h" + +//======================================== +// Forward References +//======================================== +class RailCam; +class SuperCam; +class WBCamTarget; +class StaticCam; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class GameEngine +{ +public: + static void CreateInstance(); + static void DestroyInstance(); + + static GameEngine* GetInstance(); + + void UpdateRailCam( MObject& railCam ); + void UpdateStaticCam( MObject& staticCam ); + + MayaCamera& GetMayaCam(); + +private: + void UpdateRailSettings( RailCam* railCam, MObject obj ); + void UpdateStaticCamSettings( StaticCam* staticCam, MObject obj ); + + static GameEngine* mInstance; + MayaCamera* mMayaCam; + + unsigned int mTimeStart; + + GameEngine(); + virtual ~GameEngine(); + void Init(); + void UpdateFOV( SuperCam* cam, const rmt::Vector position ); + + //Prevent wasteful constructor creation. + GameEngine( const GameEngine& gameengine ); + GameEngine& operator=( const GameEngine& gameengine ); +}; + +//============================================================================= +// GameEngine::GetMayaCam +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline MayaCamera& GameEngine::GetMayaCam() +{ + return *mMayaCam; +} + +#endif //GAMEENGINE_H diff --git a/tools/worldbuilder/code/gameengine/mayacamera.cpp b/tools/worldbuilder/code/gameengine/mayacamera.cpp new file mode 100644 index 0000000..6104cd5 --- /dev/null +++ b/tools/worldbuilder/code/gameengine/mayacamera.cpp @@ -0,0 +1,151 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: MayaCamera.cpp +// +// Description: Implement MayaCamera +// +// History: 22/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +// Foundation Tech +#include <raddebug.hpp> + +//======================================== +// Project Includes +//======================================== +#include "MayaCamera.h" +#include "main/constants.h" +#include "utility/mext.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +const MString WB_CAM_NAME( "WorldBuilderCam" ); + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// MayaCamera::MayaCamera +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +MayaCamera::MayaCamera() +{ + EnsureCamExists(); +} + +//============================================================================== +// MayaCamera::~MayaCamera +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +MayaCamera::~MayaCamera() +{ +} + +//============================================================================= +// MayaCamera::EnsureCamExists +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void MayaCamera::EnsureCamExists() +{ + MStatus status; + MFnCamera fnCamera; + + MDagPath path; + + if ( !MExt::FindDagNodeByName( &path, WB_CAM_NAME ) ) + { + fnCamera.create( &status ); + assert( status ); + + fnCamera.setName( WB_CAM_NAME + MString( "Camera" ) ); + + MFnDependencyNode transform( fnCamera.parent( 0 ) ); + + MString transName = WB_CAM_NAME; + transform.setName( transName ); + } +} + +//============================================================================= +// MayaCamera::Set +//============================================================================= +// Description: Comment +// +// Parameters: ( const rmt::Vector& position, const rmt::Vector& target, const rmt::Vector& vup, float fov ) +// +// Return: void +// +//============================================================================= +void MayaCamera::Set( const rmt::Vector& position, const rmt::Vector& target, const rmt::Vector& vup, float fov ) +{ + MStatus status; + + EnsureCamExists(); + + MDagPath path; + bool found = MExt::FindDagNodeByName( &path, WB_CAM_NAME ); + assert( found ); + + MFnCamera fnCamera( path, &status ); + assert( status ); + + + //Scale it so you can see it. + MFnTransform fnTransform( fnCamera.parent( 0 ) ); + const double scale[3] = { 200, 200, 200 } ; + fnTransform.setScale( scale ); + + MPoint eyePosition; + eyePosition.x = position.x * WBConstants::Scale; + eyePosition.y = position.y * WBConstants::Scale; + eyePosition.z = -position.z * WBConstants::Scale; + + MVector viewDirection; + viewDirection.x = (target.x - position.x) * WBConstants::Scale; + viewDirection.y = (target.y - position.y) * WBConstants::Scale; + viewDirection.z = -(target.z - position.z) * WBConstants::Scale; + + MVector viewUp; + viewUp.x = vup.x; + viewUp.y = vup.y; + viewUp.z = -vup.z; + + status = fnCamera.set( eyePosition, viewDirection, viewUp, rmt::DegToRadian(fov), 4/3 ); + assert( status ); +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/gameengine/mayacamera.h b/tools/worldbuilder/code/gameengine/mayacamera.h new file mode 100644 index 0000000..a013366 --- /dev/null +++ b/tools/worldbuilder/code/gameengine/mayacamera.h @@ -0,0 +1,49 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: mayacamera.h +// +// Description: Blahblahblah +// +// History: 22/07/2002 + Created -- CaryBrisebois +// +//============================================================================= + +#ifndef MAYACAMERA_H +#define MAYACAMERA_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +#include <radmath/radmath.hpp> + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class MayaCamera +{ +public: + MayaCamera(); + virtual ~MayaCamera(); + + void EnsureCamExists(); + void Set( const rmt::Vector& position, const rmt::Vector& target, const rmt::Vector& vup, float fov ); + +private: + + //Prevent wasteful constructor creation. + MayaCamera( const MayaCamera& mayacamera ); + MayaCamera& operator=( const MayaCamera& mayacamera ); +}; + + +#endif //MAYACAMERA_H diff --git a/tools/worldbuilder/code/gameengine/wbcamtarget.cpp b/tools/worldbuilder/code/gameengine/wbcamtarget.cpp new file mode 100644 index 0000000..add8eb4 --- /dev/null +++ b/tools/worldbuilder/code/gameengine/wbcamtarget.cpp @@ -0,0 +1,296 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: WBCamTarget.cpp +// +// Description: Implement WBCamTarget +// +// History: 19/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== + +//======================================== +// Project Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +#include "WBCamTarget.h" +#include "utility/transformmatrix.h" +#include "main/constants.h" + +#include "utility/mext.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** + +void GetMatrix( MObject& obj, tlMatrix& hmatrix ) +{ + MFnDagNode fnNode( obj ); + + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, fnTransform.name() ) ) + { + TransformMatrix tm( dagPath ); + + tm.GetHierarchyMatrixLHS( hmatrix ); + } + else + { + MExt::DisplayError( "Target matrix is screwy!" ); + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// WBCamTarget::WBCamTarget +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +WBCamTarget::WBCamTarget() : + mTarget( MObject::kNullObj ) +{ +} + +//============================================================================== +// Description: Constructor. +// +// Parameters: MObject& target. +// +// Return: N/A. +// +//============================================================================== +WBCamTarget::WBCamTarget( MObject& target ) : + mTarget( target ) +{ +} + +//============================================================================== +// WBCamTarget::~WBCamTarget +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +WBCamTarget::~WBCamTarget() +{ +} + +//============================================================================= +// WBCamTarget::GetPosition +//============================================================================= +// Description: Comment +// +// Parameters: ( rmt::Vector* position ) +// +// Return: void +// +//============================================================================= +void WBCamTarget::GetPosition( rmt::Vector* position ) +{ + tlMatrix hmatrix; + GetMatrix( mTarget, hmatrix ); + + tlPoint point = hmatrix.GetRow( 3 ); + + *position = point; + + *position /= WBConstants::Scale; +} + +//============================================================================= +// WBCamTarget::GetHeading +//============================================================================= +// Description: Comment +// +// Parameters: ( rmt::Vector* heading ) +// +// Return: void +// +//============================================================================= +void WBCamTarget::GetHeading( rmt::Vector* heading ) +{ + tlMatrix hmatrix; + GetMatrix( mTarget, hmatrix ); + + tlPoint point = hmatrix.GetRow( 2 ); + + *heading = point; + + *heading /= WBConstants::Scale; +} + +//============================================================================= +// WBCamTarget::GetVUP +//============================================================================= +// Description: Comment +// +// Parameters: ( rmt::Vector* vup ) +// +// Return: void +// +//============================================================================= +void WBCamTarget::GetVUP( rmt::Vector* vup ) +{ + tlMatrix hmatrix; + GetMatrix( mTarget, hmatrix ); + + tlPoint point = hmatrix.GetRow( 1 ); + + *vup = point; + + *vup /= WBConstants::Scale; +} + +//============================================================================= +// WBCamTarget::GetVelocity +//============================================================================= +// Description: Comment +// +// Parameters: ( rmt::Vector* velocity ) +// +// Return: void +// +//============================================================================= +void WBCamTarget::GetVelocity( rmt::Vector* velocity ) +{ +} + +//============================================================================= +// WBCamTarget::GetID +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: unsigned +// +//============================================================================= +unsigned int WBCamTarget::GetID() +{ + return 1; +} + +//============================================================================= +// WBCamTarget::IsCar +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool WBCamTarget::IsCar() +{ + return false; +} + +//============================================================================= +// WBCamTarget::IsAirborn +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool WBCamTarget::IsAirborn() +{ + return false; +} + +//============================================================================= +// WBCamTarget::IsUnstable +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool WBCamTarget::IsUnstable() +{ + return false; +} + +//============================================================================= +// WBCamTarget::IsQuickTurn +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool WBCamTarget::IsQuickTurn() +{ + return false; +} + +//============================================================================= +// WBCamTarget::GetFirstPersonPosition +//============================================================================= +// Description: Comment +// +// Parameters: ( rmt::Vector* position ) +// +// Return: void +// +//============================================================================= +void WBCamTarget::GetFirstPersonPosition( rmt::Vector* position ) +{ + return; +} + +//============================================================================= +// WBCamTarget::GetName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const +// +//============================================================================= +const char* const WBCamTarget::GetName() +{ + MFnDependencyNode fnDepNode( mTarget ); + + return fnDepNode.name().asChar(); +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/gameengine/wbcamtarget.h b/tools/worldbuilder/code/gameengine/wbcamtarget.h new file mode 100644 index 0000000..21a629c --- /dev/null +++ b/tools/worldbuilder/code/gameengine/wbcamtarget.h @@ -0,0 +1,90 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: wbcamtarget.h +// +// Description: Blahblahblah +// +// History: 19/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef WBCAMTARGET_H +#define WBCAMTARGET_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +#include "..\..\..\game\code\camera\isupercamtarget.h" + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class WBCamTarget : public ISuperCamTarget +{ +public: + WBCamTarget(); + WBCamTarget( MObject& target ); + virtual ~WBCamTarget(); + + virtual void GetPosition( rmt::Vector* position ); + virtual void GetHeading( rmt::Vector* heading ); + virtual void GetVUP( rmt::Vector* vup ); + virtual void GetVelocity( rmt::Vector* velocity ); + virtual unsigned int GetID(); + virtual bool IsCar(); + virtual bool IsAirborn(); + virtual bool IsUnstable(); + virtual bool IsQuickTurn(); + virtual bool IsInReverse() { return false; }; + virtual void GetFirstPersonPosition( rmt::Vector* position ); + + virtual const char* const GetName(); + + void SetTarget( MObject& target ); + const MObject& GetTarget() const; + +private: + MObject& mTarget; +}; + +//============================================================================= +// WBCamTarget::SetTarget +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& target ) +// +// Return: void +// +//============================================================================= +inline void WBCamTarget::SetTarget( MObject& target ) +{ + mTarget = target; +} + +//============================================================================= +// WBCamTarget::GetTarget +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MObject +// +//============================================================================= +inline const MObject& WBCamTarget::GetTarget() const +{ + return mTarget; +} + +#endif //WBCAMTARGET_H diff --git a/tools/worldbuilder/code/main/constants.h b/tools/worldbuilder/code/main/constants.h new file mode 100644 index 0000000..fbdc641 --- /dev/null +++ b/tools/worldbuilder/code/main/constants.h @@ -0,0 +1,31 @@ +#ifndef WB_CONSTANTS +#define WB_CONSTANTS + +namespace WBConstants +{ + const unsigned int TypeIDPrefix = 0x00040201; + const float Scale = 100.0f; + + namespace NodeIDs + { + const unsigned int EventLocator = 0xd0; + const unsigned int ScriptLocator = 0xd1; + const unsigned int GenericLocator = 0xd2; + const unsigned int CarStartLocator = 0xd3; + const unsigned int SplineLocator = 0xd4; + const unsigned int ZoneEventLocator = 0xd5; + const unsigned int OcclusionLocator = 0xd6; + const unsigned int RailCamLocator = 0xd7; + const unsigned int InteriorEntranceLocator = 0xd8; + const unsigned int DirectionalLocator = 0xd9; + const unsigned int ActionEventLocator = 0xda; + const unsigned int FOVLocator = 0xdb; + const unsigned int BreakableCameraLocator = 0xdc; + const unsigned int StaticCameraLocator = 0xdd; + const unsigned int PedGroupLocator = 0xde; + + const unsigned int TriggerVolume = 0xe0; + } +} + +#endif
\ No newline at end of file diff --git a/tools/worldbuilder/code/main/pluginMain.cpp b/tools/worldbuilder/code/main/pluginMain.cpp new file mode 100644 index 0000000..220f8e6 --- /dev/null +++ b/tools/worldbuilder/code/main/pluginMain.cpp @@ -0,0 +1,193 @@ +// +// Copyright (C) 2002 Radical Entertainment +// +// File: pluginMain.cpp +// +// Author: Maya SDK Wizard +// + +#include <maya/MFnPlugin.h> + +//This is a warning provided by the STL... It seems that toollib gets whacky when there +//is other templates made... Sigh... +#pragma warning(disable:4786) + +#include "pluginmain.h" +#include "worldbuilder.h" + +#include "utility/mayahandles.h" +#include "utility/mext.h" + +#include "gameengine/gameengine.h" + +#include "../../../game/code/meta/locatorevents.h" + +//Nodes +#include "nodes/eventlocatornode.h" +#include "nodes/scriptlocatornode.h" +#include "nodes/genericlocatornode.h" +#include "nodes/carstartlocatornode.h" +#include "nodes/splinelocatornode.h" +#include "nodes/triggervolumenode.h" +#include "nodes/zoneeventlocatornode.h" +#include "nodes/occlusionlocatornode.h" +#include "nodes/railcamlocatornode.h" +#include "nodes/interiorentrancelocatornode.h" +#include "nodes/directionallocatornode.h" +#include "nodes/actioneventlocatornode.h" +#include "nodes/fovlocatornode.h" +#include "nodes/BreakableCameraLocatorNode.h" +#include "nodes/staticcameralocatornode.h" +#include "nodes/pedgrouplocator.h" + + +//Contexts +#include "contexts/LocatorContext.h" +#include "contexts/TriggerContext.h" + +//Commands +#include "commands/worldbuildercommands.h" +#include "commands/export.h" + +#include <radtime.hpp> +#include <radmemory.hpp> +#include <radthread.hpp> + +WorldBuilder* gWB; + +MStatus initializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is loaded into Maya. It +// registers all of the services that this plug-in provides with +// Maya. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + + + MayaHandles::SetHInstance( (void*)(MhInstPlugin) ); + + MFnPlugin plugin( obj, "Radical Entertainment", "4.0.1", "Any", &status ); + assert( status ); + + radTimeInitialize(); + radMemoryInitialize(); + radThreadInitialize(); + + // Add plug-in feature registration here + // + + //This is a test due to changes in the SRR stuff. + bool test = LocatorEvent::TestEvents(); + assert( test ); + + + //Register Nodes + REGISTER_LOCATOR( plugin, ScriptLocatorNode ); + REGISTER_LOCATOR( plugin, GenericLocatorNode ); + REGISTER_LOCATOR( plugin, CarStartLocatorNode ); + REGISTER_LOCATOR( plugin, SplineLocatorNode ); + REGISTER_LOCATOR( plugin, TriggerVolumeNode ); + REGISTER_LOCATOR( plugin, EventLocatorNode ); + REGISTER_LOCATOR( plugin, ZoneEventLocatorNode ); + REGISTER_LOCATOR( plugin, OcclusionLocatorNode ); + REGISTER_LOCATOR( plugin, RailCamLocatorNode ); + REGISTER_LOCATOR( plugin, InteriorEntranceLocatorNode ); + REGISTER_LOCATOR( plugin, DirectionalLocatorNode ); + REGISTER_LOCATOR( plugin, ActionEventLocatorNode ); + REGISTER_LOCATOR( plugin, FOVLocatorNode ); + REGISTER_LOCATOR( plugin, BreakableCameraLocatorNode ); + REGISTER_LOCATOR( plugin, StaticCameraLocatorNode ); + REGISTER_LOCATOR( plugin, PedGroupLocatorNode ); + + //Register Contexts + REGISTER_CONTEXT( plugin, LocatorContext ); + REGISTER_CONTEXT( plugin, TriggerContext ); + + //Register Commands + REGISTER_COMMAND( plugin, WBChangeDisplayCommand ); + REGISTER_COMMAND( plugin, WBSetLocatorTypeCmd ); + REGISTER_COMMAND( plugin, WBSetPrefixCmd ); + REGISTER_COMMAND( plugin, WBSnapLocatorCmd ); + REGISTER_COMMAND( plugin, ExportCommand ); + REGISTER_COMMAND( plugin, WBSplineCompleteCmd ); + REGISTER_COMMAND( plugin, WBCoinSplineCompleteCmd ); + REGISTER_COMMAND( plugin, WBSelectObjectCmd ); + + gWB = new WorldBuilder(); + + //Run any startup scripts. + MGlobal::sourceFile( MString( "wb_main.mel" ) ); + + GameEngine::CreateInstance(); + + return status; +} + +MStatus uninitializePlugin( MObject obj ) +// +// Description: +// this method is called when the plug-in is unloaded from Maya. It +// deregisters all of the services that it was providing. +// +// Arguments: +// obj - a handle to the plug-in object (use MFnPlugin to access it) +// +{ + MStatus status; + MFnPlugin plugin( obj ); + + // Add plug-in feature deregistration here + // + + //Run any cleanup scripts. + MGlobal::sourceFile( MString( "wb_cleanup.mel" ) ); + + if ( gWB ) + { + delete gWB; + } + + //Deregister Commands + DEREGISTER_COMMAND( plugin, WBSelectObjectCmd ); + DEREGISTER_COMMAND( plugin, WBSplineCompleteCmd ); + DEREGISTER_COMMAND( plugin, WBCoinSplineCompleteCmd ); + DEREGISTER_COMMAND( plugin, ExportCommand ); + DEREGISTER_COMMAND( plugin, WBSnapLocatorCmd ); + DEREGISTER_COMMAND( plugin, WBSetPrefixCmd ); + DEREGISTER_COMMAND( plugin, WBChangeDisplayCommand ); + DEREGISTER_COMMAND( plugin, WBSetLocatorTypeCmd ); + + //Deregister Contexts + DEREGISTER_CONTEXT( plugin, TriggerContext ); + DEREGISTER_CONTEXT( plugin, LocatorContext ); + + //Deregister Nodes + DEREGISTER_NODE( plugin, SplineLocatorNode ); + DEREGISTER_NODE( plugin, TriggerVolumeNode ); + DEREGISTER_NODE( plugin, CarStartLocatorNode); + DEREGISTER_NODE( plugin, GenericLocatorNode ); + DEREGISTER_NODE( plugin, ScriptLocatorNode ); + DEREGISTER_NODE( plugin, EventLocatorNode ); + DEREGISTER_NODE( plugin, ZoneEventLocatorNode ); + DEREGISTER_NODE( plugin, OcclusionLocatorNode ); + DEREGISTER_NODE( plugin, RailCamLocatorNode ); + DEREGISTER_NODE( plugin, InteriorEntranceLocatorNode ); + DEREGISTER_NODE( plugin, DirectionalLocatorNode ); + DEREGISTER_NODE( plugin, ActionEventLocatorNode ); + DEREGISTER_NODE( plugin, FOVLocatorNode ); + DEREGISTER_NODE( plugin, BreakableCameraLocatorNode ); + DEREGISTER_NODE( plugin, StaticCameraLocatorNode ); + DEREGISTER_NODE( plugin, PedGroupLocatorNode ); + + GameEngine::DestroyInstance(); + + radTimeTerminate(); + + return status; +} +
\ No newline at end of file diff --git a/tools/worldbuilder/code/main/pluginMain.h b/tools/worldbuilder/code/main/pluginMain.h new file mode 100644 index 0000000..3645a0d --- /dev/null +++ b/tools/worldbuilder/code/main/pluginMain.h @@ -0,0 +1,38 @@ +//---------------------------------------- +// MACROS +//---------------------------------------- + +#define REGISTER_COMMAND( p, c ) if ( ! ( ( p ).registerCommand( c##::stringId, \ + c##::creator ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_CONTEXT( p, c ) if ( ! ( ( p ).registerContextCommand( c##::stringId, \ + c##Cmd::creator ) \ + ) \ + ) return MS::kFailure + + +#define REGISTER_LOCATOR( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize, \ + MPxNode::kLocatorNode ) \ + ) \ + ) return MS::kFailure + +#define REGISTER_NODE( p, n ) if ( ! ( ( p ).registerNode( n##::stringId, \ + n##::id, \ + n##::creator, \ + n##::initialize ) \ + ) \ + ) return MS::kFailure + +#define DEREGISTER_COMMAND( p, c ) ( p ).deregisterCommand( c##::stringId ) + +#define DEREGISTER_CONTEXT( p, c ) ( p ).deregisterContextCommand( c##::stringId ) + +//#define DEREGISTER_NODE( p, n ) n##::Unload();\ +// ( p ).deregisterNode( n##::id ) + +#define DEREGISTER_NODE( p, n ) ( p ).deregisterNode( n##::id ) diff --git a/tools/worldbuilder/code/main/toolhack.h b/tools/worldbuilder/code/main/toolhack.h new file mode 100644 index 0000000..633195c --- /dev/null +++ b/tools/worldbuilder/code/main/toolhack.h @@ -0,0 +1,8 @@ +#ifndef TOOL_HACK +#define TOOL_HACK + +//FUCKING HACK! +enum tLoadStatus { LOAD_OK, LOAD_ERROR }; +typedef enum tLoadStatus tlLoadStatus; + +#endif
\ No newline at end of file diff --git a/tools/worldbuilder/code/main/worldbuilder.cpp b/tools/worldbuilder/code/main/worldbuilder.cpp new file mode 100644 index 0000000..8a0d034 --- /dev/null +++ b/tools/worldbuilder/code/main/worldbuilder.cpp @@ -0,0 +1,267 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: WorldBuilder.cpp +// +// Description: Implement WorldBuilder +// +// History: 16/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +// Foundation Tech + +//======================================== +// Project Includes +//======================================== +#include "WorldBuilder.h" +#include "utility/mext.h" + +#include "nodes/eventlocatornode.h" +#include "nodes/scriptlocatornode.h" +#include "nodes/genericlocatornode.h" +#include "nodes/carstartlocatornode.h" +#include "nodes/splinelocatornode.h" +#include "nodes/triggervolumenode.h" +#include "nodes/zoneeventlocatornode.h" +#include "nodes/occlusionlocatornode.h" +#include "nodes/railcamlocatornode.h" +#include "nodes/interiorentrancelocatornode.h" +#include "nodes/directionallocatornode.h" +#include "nodes/actioneventlocatornode.h" +#include "nodes/fovlocatornode.h" +#include "nodes/BreakableCameraLocatorNode.h" +#include "nodes/staticcameralocatornode.h" +#include "nodes/pedgrouplocator.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +unsigned int WorldBuilder::sDisplayLevel = ALL; +LocatorType::Type WorldBuilder::sLocatorType = LocatorType::EVENT; + +const char* WorldBuilder::sName = "WORLD_BUILDER_NAME"; + +char WorldBuilder::sPrefix[MAX_PREFIX_LENGTH + 1]; +char WorldBuilder::sSelectedLocator[MAX_NAME_LENGTH + 1]; + +//============================================================================== +// WorldBuilder::WorldBuilder +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +WorldBuilder::WorldBuilder() +{ + sPrefix[0] = '\0'; + sPrefix[MAX_PREFIX_LENGTH] = '\0'; +} + +//============================================================================== +// WorldBuilder::~WorldBuilder +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +WorldBuilder::~WorldBuilder() +{ +} + +//============================================================================= +// WorldBuilder::Exists +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: bool +// +//============================================================================= +bool WorldBuilder::Exists() +{ + MDagPath pathToWorldBuilder; + return MExt::FindDagNodeByName( &pathToWorldBuilder, MString( WorldBuilder::sName ) ); +} + +//============================================================================= +// WorldBuilder::AddChild +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& obj ) +// +// Return: MStatus +// +//============================================================================= +MStatus WorldBuilder::AddChild( MObject& obj ) +{ + //Make sure this exists. + CreateWorldBuilderNode(); + + MDagPath pathToWorldBuilder; + + bool good = false; + + if ( MExt::FindDagNodeByName( &pathToWorldBuilder, MString( WorldBuilder::sName ) ) ) + { + good = true; + } + + if ( good ) + { + MFnDagNode fnDagNodeWB; + + //Which type? + MFnDagNode fnDagNodeObj( obj ); + + if ( fnDagNodeObj.typeId() == EventLocatorNode::id || + fnDagNodeObj.typeId() == ScriptLocatorNode::id || + fnDagNodeObj.typeId() == CarStartLocatorNode::id || + fnDagNodeObj.typeId() == SplineLocatorNode::id || + fnDagNodeObj.typeId() == ZoneEventLocatorNode::id || + fnDagNodeObj.typeId() == GenericLocatorNode::id || + fnDagNodeObj.typeId() == RailCamLocatorNode::id || + fnDagNodeObj.typeId() == ActionEventLocatorNode::id || + fnDagNodeObj.typeId() == DirectionalLocatorNode::id || + fnDagNodeObj.typeId() == InteriorEntranceLocatorNode::id || + fnDagNodeObj.typeId() == FOVLocatorNode::id || + fnDagNodeObj.typeId() == BreakableCameraLocatorNode::id || + fnDagNodeObj.typeId() == StaticCameraLocatorNode::id || + fnDagNodeObj.typeId() == OcclusionLocatorNode::id || + fnDagNodeObj.typeId() == PedGroupLocatorNode::id ) + { + //This is a locator, parent to the "Locator" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString(LOCATORS_NAME), pathToWorldBuilder.node() ) ) + { + fnDagNodeWB.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted World Builder nodes!!" ); + } + } + else if ( fnDagNodeObj.typeId() == TriggerVolumeNode::id ) + { + //This is a locator, parent to the "TriggerVolumes" node. + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString(TRIGGER_VOLUMES_NAME), pathToWorldBuilder.node() ) ) + { + fnDagNodeWB.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted World Builder nodes!!" ); + } + } + else + { + MStatus status; + MFnNurbsCurve fnNurbs( obj, &status ); + if ( status ) + { + MDagPath dagPath; + if ( MExt::FindDagNodeByName( &dagPath, MString(SPLINES_NAME), pathToWorldBuilder.node() ) ) + { + fnDagNodeWB.setObject( dagPath.node() ); + } + else + { + MExt::DisplayError( "Someone has deleted World Builder nodes!!" ); + } + } + else + { + fnDagNodeWB.setObject( pathToWorldBuilder.node() ); + } + } + + MObject objT = fnDagNodeObj.parent( 0 ); + + return fnDagNodeWB.addChild( objT ); + } + + return MS::kFailure; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** + +//============================================================================= +// WorldBuilder::CreateWorldBuilderNode +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void WorldBuilder::CreateWorldBuilderNode() +{ + MStatus status; + + MFnTransform transform; + MObject wb, loc, tv, sp; + + MDagPath pathToWorldBuilder, testPath; + + if ( !MExt::FindDagNodeByName( &pathToWorldBuilder, MString( WorldBuilder::sName ) ) ) + { + //Create the worldbuilder transform. + wb = transform.create( MObject::kNullObj, &status ); + assert( status ); + transform.setName( MString( WorldBuilder::sName ) ); + } + else + { + wb = pathToWorldBuilder.node(); + } + + if ( !MExt::FindDagNodeByName( &pathToWorldBuilder, MString( LOCATORS_NAME ) ) ) + { + loc = transform.create( wb, &status ); + assert( status ); + transform.setName( MString( LOCATORS_NAME ) ); + } + + if ( !MExt::FindDagNodeByName( &pathToWorldBuilder, MString( TRIGGER_VOLUMES_NAME ) ) ) + { + tv = transform.create( wb, &status ); + assert( status ); + transform.setName( MString( TRIGGER_VOLUMES_NAME ) ); + } + + if ( !MExt::FindDagNodeByName( &pathToWorldBuilder, MString( SPLINES_NAME ) ) ) + { + sp = transform.create( wb, &status ); + assert( status ); + transform.setName( MString( SPLINES_NAME ) ); + } + + MGlobal::executeCommand( "wb_Create_WorldBuilderNode()" ); +}
\ No newline at end of file diff --git a/tools/worldbuilder/code/main/worldbuilder.h b/tools/worldbuilder/code/main/worldbuilder.h new file mode 100644 index 0000000..846247a --- /dev/null +++ b/tools/worldbuilder/code/main/worldbuilder.h @@ -0,0 +1,260 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: worldbuilder.h +// +// Description: Blahblahblah +// +// History: 16/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef WORLDBUILDER_H +#define WORLDBUILDER_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +#include <assert.h> + +#include <..\..\..\game\code\meta\locatortypes.h> + +//======================================== +// Forward References +//======================================== + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +const char* const WORLD_BUILDER_NAME = "WBWorldBuilder"; +const char* const LOCATORS_NAME = "WBLocators"; +const char* const TRIGGER_VOLUMES_NAME = "WBTriggerVolumes"; +const char* const SPLINES_NAME = "WBSplines"; + +class WorldBuilder +{ +public: + + enum { MAX_PREFIX_LENGTH = 24, MAX_NAME_LENGTH = 256 }; + + enum DisplayLevel + { + EVENT_LOCATORS = ( 1 << 0 ), + SCRIPT_LOCATORS = ( 1 << 1 ), + GENERIC_LOCATORS = ( 1 << 2 ), + CARSTART_LOCATORS = ( 1 << 3 ), + ZONE_EVENT_LOCATORS = ( 1 << 4 ), + OCCLUSION_LOCATORS = ( 1 << 5 ), + RAILCAM_LOCATORS = ( 1 << 6 ), + INTERIOR_LOCATORS = ( 1 << 7 ), + DIRECTIONAL_LOCATORS = ( 1 << 8 ), + ACTION_EVENT_LOCATORS = ( 1 << 9 ), + FOV_LOCATORS = ( 1 << 10 ), + BREAKABLE_CAMERA_LOCATORS = ( 1 << 11 ), + STATIC_CAMERA_LOCATORS = ( 1 << 12 ), + PED_GROUP_LOCATORS = ( 1 << 13 ), + + + LOCATORS = EVENT_LOCATORS | SCRIPT_LOCATORS | + GENERIC_LOCATORS | ZONE_EVENT_LOCATORS | + OCCLUSION_LOCATORS | RAILCAM_LOCATORS | + INTERIOR_LOCATORS | DIRECTIONAL_LOCATORS | + ACTION_EVENT_LOCATORS | FOV_LOCATORS | + BREAKABLE_CAMERA_LOCATORS | STATIC_CAMERA_LOCATORS | + PED_GROUP_LOCATORS, + + TRIGGER_VOLUMES = ( 1 << 20 ), + + ALL = ~0, + + TOTAL_LEVELS = 6 + }; + + WorldBuilder(); + virtual ~WorldBuilder(); + + static unsigned int GetDisplayLevel(); + static LocatorType::Type GetLocatorType(); + + static void SetPrefix( const char* prefix ); + static const char* const GetPrefix(); + + static bool Exists(); + static MStatus AddChild( MObject& obj ); + + static void SetSelectedLocator( const char* name ); + static const char* GetSelectedLocator(); + + static const char* sName; + +protected: + + friend class WBChangeDisplayCommand; + static unsigned int sDisplayLevel; + + friend class WBSetLocatorTypeCmd; + static LocatorType::Type sLocatorType; + + static char sPrefix[MAX_PREFIX_LENGTH + 1]; //+ 1 for the \n + static char sSelectedLocator[MAX_NAME_LENGTH + 1]; + + static void SetDisplayLevel( unsigned int level, bool on ); + static void SetLocatorType( LocatorType::Type type ); + +private: + + static void CreateWorldBuilderNode(); + + //Prevent wasteful constructor creation. + WorldBuilder( const WorldBuilder& worldbuilder ); + WorldBuilder& operator=( const WorldBuilder& worldbuilder ); +}; + +//***************************************************************************** +// +// Inline Public Methods +// +//***************************************************************************** + +//============================================================================= +// WorldBuilder::GetDisplayLevel +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: DisplayLevel +// +//============================================================================= +inline unsigned int WorldBuilder::GetDisplayLevel() +{ + return sDisplayLevel; +} + +//============================================================================= +// WorldBuilder::GetLocatorType +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: LocatorType +// +//============================================================================= +inline LocatorType::Type WorldBuilder::GetLocatorType() +{ + return sLocatorType; +} + +//============================================================================= +// WorldBuilder::SetLocatorType +//============================================================================= +// Description: Comment +// +// Parameters: ( LocatorType::Type type ) +// +// Return: void +// +//============================================================================= +inline void WorldBuilder::SetLocatorType( LocatorType::Type type ) +{ + sLocatorType = type; +} + +//============================================================================= +// WorldBuilder::GetPrefix +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const WorldBuilder::GetPrefix() +{ + return sPrefix; +} + +//============================================================================= +// WorldBuilder::SetPrefix +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* prefix ) +// +// Return: void +// +//============================================================================= +inline void WorldBuilder::SetPrefix( const char* prefix ) +{ + strcpy( sPrefix, prefix ); + sPrefix[MAX_PREFIX_LENGTH] = '\0'; +} + +//============================================================================= +// WorldBuilder::SetSelectedLocator +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void WorldBuilder::SetSelectedLocator( const char* name ) +{ + strcpy( sSelectedLocator, name ); + sSelectedLocator[MAX_NAME_LENGTH] = '\0'; +} + +//============================================================================= +// WorldBuilder::GetSelectedLocator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const +// +//============================================================================= +inline const char* WorldBuilder::GetSelectedLocator() +{ + return sSelectedLocator; +} + +//***************************************************************************** +// +// Inline Protected Methods +// +//***************************************************************************** + +//============================================================================= +// WorldBuilder::SetDisplayLevel +//============================================================================= +// Description: Comment +// +// Parameters: ( unsigned int level, bool on ) +// +// Return: inline +// +//============================================================================= +inline void WorldBuilder::SetDisplayLevel( unsigned int level, bool on ) +{ + assert( level <= TOTAL_LEVELS ); + + on ? sDisplayLevel |= ( 1 << level ) : sDisplayLevel &= ~( 1 << level ); +} + +//***************************************************************************** +// +// Inline Private Methods +// +//***************************************************************************** + +#endif //WORLDBUILDER_H diff --git a/tools/worldbuilder/code/nodes/actioneventlocatornode.cpp b/tools/worldbuilder/code/nodes/actioneventlocatornode.cpp new file mode 100644 index 0000000..5d6b577 --- /dev/null +++ b/tools/worldbuilder/code/nodes/actioneventlocatornode.cpp @@ -0,0 +1,651 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: ActionEventLocatorNode.cpp +// +// Description: Implement ActionEventLocatorNode +// +// History: 30/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include <afxwin.h> + +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/ActionEventLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "utility/transformmatrix.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" +#include "../../../game/code/ai/actionnames.h" +#include "../../../game/code/worldsim/character/charactercontroller.h" + +int SortFunc( const void* pName1, const void* pName2 ) +{ + return stricmp( *(char**)pName1, *(char**)pName2 ); +} + +void UpdateJoints( HWND hWnd, MObject& root ) +{ + CWnd* wnd = CWnd::FromHandle( GetDlgItem( hWnd, IDC_COMBO2 ) ); + CComboBox* jointList = (CComboBox*)( wnd ); + + assert( jointList ); + + jointList->ResetContent(); + + MObjectArray jointArray; + if ( MExt::FindAllTransforms( &jointArray, root ) ) + { + unsigned int i; + for ( i = 0; i < jointArray.length(); ++i ) + { + MFnDependencyNode fnNode( jointArray[i] ); + + jointList->AddString( fnNode.name().asChar() ); + } + } + else + { + jointList->AddString( "NO JOINTS!" ); + } + + jointList->SetCurSel( 0 ); +} + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId ActionEventLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::ActionEventLocator ); +const char* ActionEventLocatorNode::stringId = "ActionEventLocatorNode"; + +const int ActionEventLocatorNode::ACTIVE_COLOUR = 15; +const int ActionEventLocatorNode::INACTIVE_COLOUR = 12; +const float ActionEventLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* ActionEventLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* ActionEventLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject ActionEventLocatorNode::sTriggers; + +const char* ActionEventLocatorNode::OBJECT_NAME_SHORT = "acnobjt"; +const char* ActionEventLocatorNode::OBJECT_NAME_LONG = "actionObject"; +MObject ActionEventLocatorNode::sObject; + +const char* ActionEventLocatorNode::JOINT_NAME_SHORT = "jnt"; +const char* ActionEventLocatorNode::JOINT_NAME_LONG = "joint"; +MObject ActionEventLocatorNode::sJoint; + +const char* ActionEventLocatorNode::ACTION_NAME_SHORT = "actn"; +const char* ActionEventLocatorNode::ACTION_NAME_LONG = "action"; +MObject ActionEventLocatorNode::sActionType; + +const char* ActionEventLocatorNode::BUTTON_NAME_SHORT = "btninpt"; +const char* ActionEventLocatorNode::BUTTON_NAME_LONG = "buttonInput"; +MObject ActionEventLocatorNode::sButtonInput; + +const char* ActionEventLocatorNode::TRANSFORM_NAME_SHORT = "st"; +const char* ActionEventLocatorNode::TRANSFORM_NAME_LONG = "shouldTransform"; +MObject ActionEventLocatorNode::sTransform; + +const char* ActionEventLocatorNode::EXPORT_TRANSFORM_NAME_SHORT = "exptTrans"; +const char* ActionEventLocatorNode::EXPORT_TRANSFORM_NAME_LONG = "exportTransform"; +MObject ActionEventLocatorNode::sExportTransform; + +char ActionEventLocatorNode::sNewName[MAX_NAME_LEN]; +char ActionEventLocatorNode::sNewObj[MAX_NAME_LEN]; +char ActionEventLocatorNode::sNewJoint[MAX_NAME_LEN]; + +const char* ActionEventLocatorNode::names[ActionButton::ActionNameSize]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK ActionEventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + SetDlgItemText( hWnd, IDC_EDIT3, "" ); + + CWnd* wnd = CWnd::FromHandle( GetDlgItem( hWnd, IDC_COMBO1 ) ); + CComboBox* objectList = (CComboBox*)( wnd ); + + assert( objectList ); + + objectList->ResetContent(); + + bool foundSkeletonRoots = false; + MObjectArray skeletonRoots; + + if ( MExt::FindAllSkeletonRoots( &skeletonRoots ) ) + { + //Fill up with all the roots. + unsigned int i; + for ( i = 0; i < skeletonRoots.length(); ++i ) + { + MFnDependencyNode fnNode( skeletonRoots[i] ); + + objectList->AddString( fnNode.name().asChar() ); + } + + foundSkeletonRoots = true; + } + else + { + objectList->AddString( "NO SKELETON ROOTS!" ); + } + + objectList->SetCurSel( 0 ); + + char objName[256]; + GetDlgItemText( hWnd, IDC_COMBO1, objName, 256 ); + + MDagPath path; + MExt::FindDagNodeByName( &path, MString( objName ) ); + + UpdateJoints( hWnd, path.node() ); + + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[ActionEventLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, ActionEventLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Action Event Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + ActionEventLocatorNode::SetNewName( newName.asChar() ); + + //Do the Object name too... + GetDlgItemText( hWnd, IDC_COMBO1, name, ActionEventLocatorNode::MAX_NAME_LEN ); + + MString possibleName( name ); + MString corrected = possibleName; + int index = possibleName.index( ':' ); + if ( index != -1 ) + { + corrected = possibleName.substring( index + 1, possibleName.length() - 1 ); + } + else + + if ( strcmp(corrected.asChar(), "") == 0 ) + { + MExt::DisplayWarning("You must input an object name!"); + return false; + } + + ActionEventLocatorNode::SetNewObj( corrected.asChar() ); + + //Do the Object name too... + GetDlgItemText( hWnd, IDC_COMBO2, name, ActionEventLocatorNode::MAX_NAME_LEN ); + + possibleName = MString( name ); + corrected = possibleName; + index = possibleName.index( ':' ); + if ( index != -1 ) + { + corrected = possibleName.substring( index + 1, possibleName.length() - 1 ); + } + + if ( strcmp(corrected.asChar(), "") == 0 ) + { + MExt::DisplayWarning("You must input a joint name!"); + return false; + } + + ActionEventLocatorNode::SetNewJoint( corrected.asChar() ); + + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + ActionEventLocatorNode::SetNewName( "" ); + ActionEventLocatorNode::SetNewObj( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if ( LOWORD(wParam) == IDC_COMBO1 ) + { + DWORD hiWord = HIWORD(wParam); + + if ( hiWord == CBN_SELCHANGE ) + { + char objName[256]; + GetDlgItemText( hWnd, IDC_COMBO1, objName, 256 ); + + MDagPath path; + MExt::FindDagNodeByName( &path, MString( objName ) ); + + UpdateJoints( hWnd, path.node() ); + } + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// ActionEventLocatorNode::ActionEventLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ActionEventLocatorNode::ActionEventLocatorNode() +{ + unsigned int i; + for ( i = 0; i < MAX_NAME_LEN; ++i ) + { + sNewJoint[i] = '\0'; + } +} + +//============================================================================== +// ActionEventLocatorNode::~ActionEventLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ActionEventLocatorNode::~ActionEventLocatorNode() +{ +} + +//============================================================================= +// ActionEventLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* ActionEventLocatorNode::creator() +{ + return new ActionEventLocatorNode(); +} + +//============================================================================= +// ActionEventLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void ActionEventLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::ACTION_EVENT_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + //Draw a box around the source trigger volume. + MPoint triggerWP, thisWP; + + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + //MExt::GetWorldPosition( &thisWP, thisMObject() ); + MMatrix mat = MExt::GetWorldMatrix( thisMObject() ); + MMatrix invMat = mat.inverse(); + + MPoint triggerLP; + //triggerLP = triggerWP - thisWP; + triggerLP = triggerWP * invMat; + + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawA( SCALE, 0,1,0, 5.0 ); + GLExt::drawArrow( MPoint( 0, 0, 0 ), MPoint( 0, 0, -1 * WBConstants::Scale ), 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// ActionEventLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus ActionEventLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnTypedAttribute typedAttr; + sObject = typedAttr.create( OBJECT_NAME_LONG, OBJECT_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sObject ) ); + + sJoint = typedAttr.create( JOINT_NAME_LONG, JOINT_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sJoint ) ); + + MFnEnumAttribute enumAttr; + sActionType = enumAttr.create( ACTION_NAME_LONG, ACTION_NAME_SHORT, 0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( enumAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.setWritable( true ) ); + + unsigned int i; + for ( i = 0; i < ActionButton::ActionNameSize; ++i ) + { + names[i] = ActionButton::ActionName[i]; + } + + // Sorting seems to make a mess of things. + // commenting out for now. + // TBJ [8/9/2002] + // + //qsort( names, ActionButton::ActionNameSize, sizeof( char* ), SortFunc ); + + for ( i = 0; i < ActionButton::ActionNameSize; ++i ) + { + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( names[i] ), i ) ); + } + + RETURN_STATUS_ON_FAILURE( addAttribute( sActionType ) ); + + sButtonInput = enumAttr.create( BUTTON_NAME_LONG, BUTTON_NAME_SHORT, CharacterController::DoAction, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( enumAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.setWritable( true ) ); + for ( i = 0; i < ActionButton::ButtonNameListSize; ++i ) + { + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( ActionButton::ButtonName[i] ), i ) ); + } + + RETURN_STATUS_ON_FAILURE( addAttribute( sButtonInput ) ); + + MFnNumericAttribute numericAttr; + sTransform = numericAttr.create( TRANSFORM_NAME_LONG, TRANSFORM_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTransform ) ); + + sExportTransform = numericAttr.create( EXPORT_TRANSFORM_NAME_LONG, EXPORT_TRANSFORM_NAME_SHORT, MFnNumericData::kBoolean, true, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sExportTransform ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// ActionEventLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void ActionEventLocatorNode::postConstructor() +{ +} + +//============================================================================= +// ActionEventLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& actionEventLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* ActionEventLocatorNode::Export( MObject& actionEventLocatorNode ) +{ + MFnDagNode fnNode( actionEventLocatorNode ); + + if ( fnNode.typeId() == ActionEventLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::ACTION ); + + MString objName; + MString jointName; + int actionInt; + MString actionName; + int button; + bool shouldTransform; + + //Get the data + fnNode.findPlug( ActionEventLocatorNode::sObject ).getValue( objName ); + if ( objName.length() == 0 ) + { + objName.set( "<null>" ); + } + + fnNode.findPlug( ActionEventLocatorNode::sJoint ).getValue( jointName ); + if ( jointName.length() == 0 ) + { + jointName.set( "<null>" ); + } + fnNode.findPlug( ActionEventLocatorNode::sActionType ).getValue( actionInt ); + + actionName = MString( names[actionInt] ); + + fnNode.findPlug( ActionEventLocatorNode::sButtonInput ).getValue( button ); + fnNode.findPlug( ActionEventLocatorNode::sTransform ).getValue( shouldTransform ); + + //Save it out. + unsigned int length = (objName.length() / 4 + 1) + + (jointName.length() / 4 + 1) + + (actionName.length() / 4 + 1) + + 2; //button and shouldTransform + + unsigned long* data = new unsigned long[length]; + + unsigned int i; + for ( i = 0; i < length; ++i ) + { + data[i] = 0; + } + + unsigned int next = 0; + memcpy( data, objName.asChar(), objName.length() ); + next = objName.length() / 4 + 1; + + memcpy( &data[next], jointName.asChar(), jointName.length() ); + next += jointName.length() / 4 + 1; + + memcpy( &data[next], actionName.asChar(), actionName.length() ); + next += actionName.length() / 4 + 1; + + memcpy( &data[next], &button, sizeof(int) ); + next++; + + memcpy( &data[next], &shouldTransform, sizeof(bool) ); + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + delete data; + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, actionEventLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + //Add the matrix if we're supposed to. + bool exportTrans = false; + fnNode.findPlug( sExportTransform ).getValue( exportTrans ); + if ( exportTrans ) + { + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + tlExtraMatrixChunk* emChunk = new tlExtraMatrixChunk(); + emChunk->SetMatrix( hmatrix ); + + locator->AppendSubChunk( emChunk ); + } + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/actioneventlocatornode.h b/tools/worldbuilder/code/nodes/actioneventlocatornode.h new file mode 100644 index 0000000..0019a9b --- /dev/null +++ b/tools/worldbuilder/code/nodes/actioneventlocatornode.h @@ -0,0 +1,205 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: actioneventlocatornode.h +// +// Description: Blahblahblah +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef ACTIONEVENTLOCATORNODE_H +#define ACTIONEVENTLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" +#include "../../../game/code/ai/actionnames.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK ActionEventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class ActionEventLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + ActionEventLocatorNode(); + virtual ~ActionEventLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + static void SetNewObj( const char* name ); + static const char* const GetNewObj(); + static void SetNewJoint( const char* name ); + static const char* const GetNewJoint(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* OBJECT_NAME_SHORT; + static const char* OBJECT_NAME_LONG; + static MObject sObject; + + static const char* JOINT_NAME_SHORT; + static const char* JOINT_NAME_LONG; + static MObject sJoint; + + static const char* ACTION_NAME_SHORT; + static const char* ACTION_NAME_LONG; + static MObject sActionType; + + static const char* BUTTON_NAME_SHORT; + static const char* BUTTON_NAME_LONG; + static MObject sButtonInput; + + static const char* TRANSFORM_NAME_SHORT; + static const char* TRANSFORM_NAME_LONG; + static MObject sTransform; + + static const char* EXPORT_TRANSFORM_NAME_SHORT; + static const char* EXPORT_TRANSFORM_NAME_LONG; + static MObject sExportTransform; +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + static char sNewObj[MAX_NAME_LEN]; + static char sNewJoint[MAX_NAME_LEN]; + + //We want the names in alphapetical order. + static const char* names[ActionButton::ActionNameSize]; + + //Prevent wasteful constructor creation. + ActionEventLocatorNode( const ActionEventLocatorNode& actioneventlocatornode ); + ActionEventLocatorNode& operator=( const ActionEventLocatorNode& actioneventlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// ActionEventLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ActionEventLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// ActionEventLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ActionEventLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// ActionEventLocatorNode::SetNewObj +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ActionEventLocatorNode::SetNewObj( const char* name ) +{ + strncpy( sNewObj, name, MAX_NAME_LEN); +} + +//============================================================================= +// ActionEventLocatorNode::GetNewObj +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ActionEventLocatorNode::GetNewObj() +{ + return sNewObj; +} + +//============================================================================= +// ActionEventLocatorNode::SetNewJoint +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ActionEventLocatorNode::SetNewJoint( const char* name ) +{ + strncpy( sNewJoint, name, MAX_NAME_LEN); +} + +//============================================================================= +// ActionEventLocatorNode::GetNewJoint +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ActionEventLocatorNode::GetNewJoint() +{ + return sNewJoint; +} + +#endif //ACTIONEVENTLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/breakablecameralocatornode.cpp b/tools/worldbuilder/code/nodes/breakablecameralocatornode.cpp new file mode 100644 index 0000000..0b0cd5c --- /dev/null +++ b/tools/worldbuilder/code/nodes/breakablecameralocatornode.cpp @@ -0,0 +1,327 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: BreakableCameraLocatorNode.cpp +// +// Description: Implement BreakableCameraLocatorNode +// +// History: 9/17/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +// Foundation Tech +#include <raddebug.hpp> + +//======================================== +// Project Includes +//======================================== +#include "BreakableCameraLocatorNode.h" + +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "utility/transformmatrix.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId BreakableCameraLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::BreakableCameraLocator ); +const char* BreakableCameraLocatorNode::stringId = "BreakableCameraLocatorNode"; + +const int BreakableCameraLocatorNode::ACTIVE_COLOUR = 15; +const int BreakableCameraLocatorNode::INACTIVE_COLOUR = 12; +const float BreakableCameraLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char BreakableCameraLocatorNode::sNewName[MAX_NAME_LEN]; + +const char* BreakableCameraLocatorNode::FOV_NAME_SHORT = "fov"; +const char* BreakableCameraLocatorNode::FOV_NAME_LONG = "fieldOfView"; +MObject BreakableCameraLocatorNode::sFOV; + + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK BreakableCameraLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[BreakableCameraLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, BreakableCameraLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Breakable Camera Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + BreakableCameraLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + BreakableCameraLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// BreakableCameraLocatorNode::BreakableCameraLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +BreakableCameraLocatorNode::BreakableCameraLocatorNode() +{ +} + +//============================================================================== +// BreakableCameraLocatorNode::~BreakableCameraLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +BreakableCameraLocatorNode::~BreakableCameraLocatorNode() +{ +} + +//============================================================================= +// BreakableCameraLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* BreakableCameraLocatorNode::creator() +{ + return new BreakableCameraLocatorNode(); +} + +//============================================================================= +// BreakableCameraLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void BreakableCameraLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::DIRECTIONAL_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE * 0.15f, 0,0,0, 5.0f ); + GLExt::drawCamera3D( SCALE * 0.3f, 0,0.5f,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// BreakableCameraLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus BreakableCameraLocatorNode::initialize() +{ + MStatus status; + MFnNumericAttribute numAttr; + sFOV = numAttr.create( FOV_NAME_LONG, FOV_NAME_SHORT, MFnNumericData::kFloat, 90.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.1f) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(180.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFOV ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// BreakableCameraLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void BreakableCameraLocatorNode::postConstructor() +{ +} + +//============================================================================= +// BreakableCameraLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& breakableCameraLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* BreakableCameraLocatorNode::Export( MObject& breakableCameraLocatorNode ) +{ + MFnDagNode fnNode( breakableCameraLocatorNode ); + + if ( fnNode.typeId() == BreakableCameraLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::BREAKABLE_CAMERA ); + + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + unsigned int length = (3 * 3) + 1; //3 vectors + 1 float + + unsigned long* data; + + data = new unsigned long[ length ]; + + unsigned int row; + for ( row = 0; row < 3; ++row ) + { + tlPoint point = hmatrix.GetRow( row ); + + memcpy( &data[row * 3], &point.x, sizeof(float) * 3 ); + } + + float fov = 90.0f; + fnNode.findPlug( sFOV ).getValue( fov ); + memcpy( &data[row * 3], &fov, sizeof(float) ); + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, breakableCameraLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + return locator; + } + + return NULL; +} +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/breakablecameralocatornode.h b/tools/worldbuilder/code/nodes/breakablecameralocatornode.h new file mode 100644 index 0000000..84a4cea --- /dev/null +++ b/tools/worldbuilder/code/nodes/breakablecameralocatornode.h @@ -0,0 +1,113 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: breakablecameralocatornode.h +// +// Description: Blahblahblah +// +// History: 9/17/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef BREAKABLECAMERALOCATORNODE_H +#define BREAKABLECAMERALOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK BreakableCameraLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class BreakableCameraLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + BreakableCameraLocatorNode(); + virtual ~BreakableCameraLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& interiorEntranceLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* FOV_NAME_SHORT; + static const char* FOV_NAME_LONG; + static MObject sFOV; + +private: + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + BreakableCameraLocatorNode( const BreakableCameraLocatorNode& breakablecameralocatornode ); + BreakableCameraLocatorNode& operator=( const BreakableCameraLocatorNode& breakablecameralocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// BreakableCameraLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void BreakableCameraLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// BreakableCameraLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const BreakableCameraLocatorNode::GetNewName() +{ + return sNewName; +} + + +#endif //BREAKABLECAMERALOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/carstartlocatornode.cpp b/tools/worldbuilder/code/nodes/carstartlocatornode.cpp new file mode 100644 index 0000000..2b7dfff --- /dev/null +++ b/tools/worldbuilder/code/nodes/carstartlocatornode.cpp @@ -0,0 +1,347 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: CarStartLocatorNode.cpp +// +// Description: Implement CarStartLocatorNode +// +// History: 28/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/CarStartLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatorevents.h" +#include "../../../game/code/meta/locatortypes.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId CarStartLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::CarStartLocator ); +const char* CarStartLocatorNode::stringId = "CarStartLocatorNode"; + +const int CarStartLocatorNode::ACTIVE_COLOUR = 15; +const int CarStartLocatorNode::INACTIVE_COLOUR = 12; +const float CarStartLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char CarStartLocatorNode::sNewName[MAX_NAME_LEN]; + +const char* CarStartLocatorNode::ISPARKED_NAME_SHORT = "ip"; +const char* CarStartLocatorNode::ISPARKED_NAME_LONG = "isParked"; +MObject CarStartLocatorNode::sIsParked; + +const char* CarStartLocatorNode::SPECIAL_NAME_SHORT = "spc"; +const char* CarStartLocatorNode::SPECIAL_NAME_LONG = "specialName"; +MObject CarStartLocatorNode::sSpecialCarName; + + + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK CarStartLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[CarStartLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, CarStartLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Car Start Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + CarStartLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + CarStartLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// CarStartLocatorNode::CarStartLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +CarStartLocatorNode::CarStartLocatorNode() +{ +} + +//============================================================================== +// CarStartLocatorNode::~CarStartLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +CarStartLocatorNode::~CarStartLocatorNode() +{ +} + +//============================================================================= +// CarStartLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* CarStartLocatorNode::creator() +{ + return new CarStartLocatorNode(); +} + +//============================================================================= +// CarStartLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void CarStartLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::CARSTART_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawCar( SCALE, 0,1,0, 5.0 ); + GLExt::drawArrow( MPoint( 0, 0, 0 ), MPoint( 0, 0, 1 * WBConstants::Scale ), 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// CarStartLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus CarStartLocatorNode::initialize() +{ + MStatus status; + + MFnNumericAttribute numericAttr; + sIsParked = numericAttr.create( ISPARKED_NAME_LONG, ISPARKED_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sIsParked ) ); + + MFnTypedAttribute typedAttr; + sSpecialCarName = typedAttr.create( SPECIAL_NAME_LONG, SPECIAL_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sSpecialCarName ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// CarStartLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void CarStartLocatorNode::postConstructor() +{ +} + +//============================================================================= +// CarStartLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& CarStartLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* CarStartLocatorNode::Export( MObject& carStartLocatorNode ) +{ + MFnDagNode fnNode( carStartLocatorNode ); + + if ( fnNode.typeId() == CarStartLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::CAR_START ); + + unsigned int numDataElements = 2; + + MString specialName; + fnNode.findPlug( sSpecialCarName ).getValue( specialName ); + if ( specialName.length() > 0 ) + { + //Add the length of the string + 1 to the num of + //elements. + numDataElements += specialName.length() / 4 + 1; + } + + unsigned long* data = new unsigned long[numDataElements]; //1 (rotation) + 1 (isParked) + special name len + 1 + memset( data, 0, numDataElements * 4 ); + + //The data here is the Y rotation associated with this locator. + double rotationDouble; + MObject transform = fnNode.parent( 0 ); + MFnDependencyNode fnDepNode( transform ); + fnDepNode.findPlug( MString("ry") ).getValue( rotationDouble ); + + //This is for p3d! + rotationDouble *= -1; + + float rotationFloat = (float)rotationDouble; + + memcpy( &data[0], &rotationFloat, sizeof(float) ); + + + //Do the is Parked Car + bool isParked = false; + fnNode.findPlug( sIsParked ).getValue( isParked ); + data[1] = isParked ? 1 : 0; + + if ( specialName.length() > 0 ) + { + //Add the name + memcpy( &data[2], specialName.asChar(), specialName.length() ); + } + + locator->SetDataElements( data, numDataElements ); + locator->SetNumDataElements( numDataElements ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, carStartLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/carstartlocatornode.h b/tools/worldbuilder/code/nodes/carstartlocatornode.h new file mode 100644 index 0000000..6ffa52c --- /dev/null +++ b/tools/worldbuilder/code/nodes/carstartlocatornode.h @@ -0,0 +1,117 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: carstartlocatornode.h +// +// Description: Blahblahblah +// +// History: 28/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef CARSTARTLOCATORNODE_H +#define CARSTARTLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK CarStartLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + + +class CarStartLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + CarStartLocatorNode(); + virtual ~CarStartLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* ISPARKED_NAME_SHORT; + static const char* ISPARKED_NAME_LONG; + static MObject sIsParked; + + static const char* SPECIAL_NAME_SHORT; + static const char* SPECIAL_NAME_LONG; + static MObject sSpecialCarName; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + CarStartLocatorNode( const CarStartLocatorNode& carstartlocatornode ); + CarStartLocatorNode& operator=( const CarStartLocatorNode& carstartlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// CarStartLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void CarStartLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// CarStartLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const CarStartLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //CARSTARTLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/directionallocatornode.cpp b/tools/worldbuilder/code/nodes/directionallocatornode.cpp new file mode 100644 index 0000000..483df4b --- /dev/null +++ b/tools/worldbuilder/code/nodes/directionallocatornode.cpp @@ -0,0 +1,312 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: DirectionalLocatorNode.cpp +// +// Description: Implement DirectionalLocatorNode +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/DirectionalLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "utility/transformmatrix.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId DirectionalLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::DirectionalLocator ); +const char* DirectionalLocatorNode::stringId = "DirectionalLocatorNode"; + +const int DirectionalLocatorNode::ACTIVE_COLOUR = 15; +const int DirectionalLocatorNode::INACTIVE_COLOUR = 12; +const float DirectionalLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char DirectionalLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK DirectionalLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[DirectionalLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, DirectionalLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Driectional Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + DirectionalLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + DirectionalLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// DirectionalLocatorNode::DirectionalLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +DirectionalLocatorNode::DirectionalLocatorNode() +{ +} + +//============================================================================== +// DirectionalLocatorNode::~DirectionalLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +DirectionalLocatorNode::~DirectionalLocatorNode() +{ +} + +//============================================================================= +// DirectionalLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* DirectionalLocatorNode::creator() +{ + return new DirectionalLocatorNode(); +} + +//============================================================================= +// DirectionalLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void DirectionalLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::DIRECTIONAL_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawArrow( MPoint( 0, 0, 0 ), MPoint( 0, 0, -1 * WBConstants::Scale ), 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// DirectionalLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus DirectionalLocatorNode::initialize() +{ + return MStatus::kSuccess; +} + +//============================================================================= +// DirectionalLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void DirectionalLocatorNode::postConstructor() +{ +} + +//============================================================================= +// DirectionalLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& directionalLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* DirectionalLocatorNode::Export( MObject& directionalLocatorNode ) +{ + MFnDagNode fnNode( directionalLocatorNode ); + + if ( fnNode.typeId() == DirectionalLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::DIRECTIONAL ); + + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + unsigned int length = 3 * 3; //3 vectors + + unsigned long* data; + + data = new unsigned long[ length ]; + + unsigned int row; + for ( row = 0; row < 3; ++row ) + { + tlPoint point = hmatrix.GetRow( row ); + + memcpy( &data[row * 3], &point.x, sizeof(float) * 3 ); + } + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, directionalLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/directionallocatornode.h b/tools/worldbuilder/code/nodes/directionallocatornode.h new file mode 100644 index 0000000..766d83a --- /dev/null +++ b/tools/worldbuilder/code/nodes/directionallocatornode.h @@ -0,0 +1,107 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: directionallocatornode.h +// +// Description: Blahblahblah +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef DIRECTIONALLOCATORNODE_H +#define DIRECTIONALLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK DirectionalLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class DirectionalLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + DirectionalLocatorNode(); + virtual ~DirectionalLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& interiorEntranceLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + +private: + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + DirectionalLocatorNode( const DirectionalLocatorNode& directionallocatornode ); + DirectionalLocatorNode& operator=( const DirectionalLocatorNode& directionallocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// DirectionalLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void DirectionalLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// DirectionalLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const DirectionalLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //DIRECTIONALLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/eventlocatornode.cpp b/tools/worldbuilder/code/nodes/eventlocatornode.cpp new file mode 100644 index 0000000..ff2c620 --- /dev/null +++ b/tools/worldbuilder/code/nodes/eventlocatornode.cpp @@ -0,0 +1,460 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: EventLocatorNode.cpp +// +// Description: Implement EventLocatorNode +// +// History: 16/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "EventLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatorevents.h" +#include "../../../game/code/meta/locatortypes.h" + +#include "utility/transformmatrix.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId EventLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::EventLocator ); +const char* EventLocatorNode::stringId = "EventLocatorNode"; + +const int EventLocatorNode::ACTIVE_COLOUR = 15; +const int EventLocatorNode::INACTIVE_COLOUR = 12; +const float EventLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* EventLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* EventLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject EventLocatorNode::sTriggers; + +const char* EventLocatorNode::EVENT_NAME_SHORT = "e"; +const char* EventLocatorNode::EVENT_NAME_LONG = "event"; +MObject EventLocatorNode::sEvent; + +const char* EventLocatorNode::EXTRA_NAME_SHORT = "ex"; +const char* EventLocatorNode::EXTRA_NAME_LONG = "extraData"; +MObject EventLocatorNode::sExtraData; + +char EventLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK EventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[EventLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, EventLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Event Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + EventLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + EventLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// EventLocatorNode::EventLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +EventLocatorNode::EventLocatorNode() +{ +} + +//============================================================================== +// EventLocatorNode::~EventLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +EventLocatorNode::~EventLocatorNode() +{ +} + +//============================================================================= +// EventLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* EventLocatorNode::creator() +{ + return new EventLocatorNode(); +} + +//============================================================================= +// EventLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void EventLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::EVENT_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + //Need to undo funny transformations... + MMatrix mat; + mat.setToIdentity(); + + MObject transform; + transform = fnNode.parent( 0 ); + MFnDependencyNode transNode( transform ); + MDagPath transPath; + MExt::FindDagNodeByName( &transPath, transNode.name() ); + MFnTransform fnTransform( transPath ); + + mat = fnTransform.transformationMatrix(); + + mat = mat.inverse(); + + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MPoint triggerLP; + triggerLP = triggerWP; // - thisWP; + + triggerLP *= mat; + + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawE( SCALE, 0,1,0, 5.0 ); + + MFnDagNode fnNode( thisMObject() ); + int event; + fnNode.findPlug( sEvent ).getValue( event ); + + if ( event == LocatorEvent::DEATH || + event == LocatorEvent::WHACKY_GRAVITY || + event == LocatorEvent::CHECK_POINT ) + { + GLExt::drawArrow( MPoint( 0, 0, 0 ), MPoint( 0, 0, -1 * WBConstants::Scale ), 5.0 ); + } + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// EventLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus EventLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnEnumAttribute enumAttr; + sEvent = enumAttr.create( EVENT_NAME_LONG, EVENT_NAME_SHORT, LocatorEvent::CHECK_POINT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( enumAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.setWritable( true ) ); + + unsigned int i; + for ( i = 0; i < LocatorEvent::SPECIAL; ++i ) //This is the part in the + //enum where the regular + //events end. + { + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( LocatorEvent::Name[i] ), i ) ); + } + + RETURN_STATUS_ON_FAILURE( addAttribute( sEvent ) ); + + MFnTypedAttribute typAttr; + sExtraData = typAttr.create( EXTRA_NAME_LONG, EXTRA_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sExtraData ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// EventLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void EventLocatorNode::postConstructor() +{ +} + +//============================================================================= +// EventLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& eventLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* EventLocatorNode::Export( MObject& eventLocatorNode ) +{ + MFnDagNode fnNode( eventLocatorNode ); + + if ( fnNode.typeId() == EventLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::EVENT ); + + //The data here is the event associated with this locator. + int event; + fnNode.findPlug( sEvent ).getValue( event ); + + if ( event == static_cast<int>( LocatorEvent::FAR_PLANE ) || + event == static_cast<int>( LocatorEvent::GOO_DAMAGE ) || + event == static_cast<int>( LocatorEvent::COIN_ZONE ) || + event == static_cast<int>( LocatorEvent::CHECK_POINT ) || + event == static_cast<int>( LocatorEvent::TRAP ) || + event == static_cast<int>( LocatorEvent::LIGHT_CHANGE ) ) + { + //Add some extra data. + unsigned long data[2]; + data[0] = event; + + MString extraData; + fnNode.findPlug( sExtraData ).getValue( extraData ); + assert( extraData.isInt() ); + if ( extraData.isInt() ) + { + int extra = extraData.asInt(); + memcpy( &data[1], &extra, sizeof(int) ); + } + else + { + MExt::DisplayWarning( "Event locator: %s has bad extra data, it is probably an old version.(defaulting to 0)", fnNode.name().asChar() ); + data[1] = 0; + } + + locator->SetDataElements( data, 2 ); + locator->SetNumDataElements( 2 ); + } + else + { + //Do the old way. + unsigned long data = event; + locator->SetDataElements( &data, 1 ); + locator->SetNumDataElements( 1 ); + } + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, eventLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + if ( event == LocatorEvent::DEATH || + event == LocatorEvent::WHACKY_GRAVITY || + event == LocatorEvent::CHECK_POINT ) + { + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + tlExtraMatrixChunk* emChunk = new tlExtraMatrixChunk(); + emChunk->SetMatrix( hmatrix ); + + locator->AppendSubChunk( emChunk ); + } + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/eventlocatornode.h b/tools/worldbuilder/code/nodes/eventlocatornode.h new file mode 100644 index 0000000..901dd8c --- /dev/null +++ b/tools/worldbuilder/code/nodes/eventlocatornode.h @@ -0,0 +1,121 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: eventlocatornode.h +// +// Description: Blahblahblah +// +// History: 16/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef EVENTLOCATORNODE_H +#define EVENTLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK EventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class EventLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + EventLocatorNode(); + virtual ~EventLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* EVENT_NAME_SHORT; + static const char* EVENT_NAME_LONG; + static MObject sEvent; + + static const char* EXTRA_NAME_SHORT; + static const char* EXTRA_NAME_LONG; + static MObject sExtraData; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + EventLocatorNode( const EventLocatorNode& eventlocatornode ); + EventLocatorNode& operator=( const EventLocatorNode& eventlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// EventLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void EventLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// EventLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const EventLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //EVENTLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/fovlocatornode.cpp b/tools/worldbuilder/code/nodes/fovlocatornode.cpp new file mode 100644 index 0000000..90f9301 --- /dev/null +++ b/tools/worldbuilder/code/nodes/fovlocatornode.cpp @@ -0,0 +1,361 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: FOVLocatorNode.cpp +// +// Description: Implement FOVLocatorNode +// +// History: 03/08/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/FOVLocatorNode.h" + +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId FOVLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::FOVLocator ); +const char* FOVLocatorNode::stringId = "FOVLocatorNode"; + +const char* FOVLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* FOVLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject FOVLocatorNode::sTriggers; + +const char* FOVLocatorNode::FOV_NAME_SHORT = "f"; +const char* FOVLocatorNode::FOV_NAME_LONG = "fov"; +MObject FOVLocatorNode::sFOV; + +const char* FOVLocatorNode::TIME_NAME_SHORT = "tm"; +const char* FOVLocatorNode::TIME_NAME_LONG = "time"; +MObject FOVLocatorNode::sTime; + +const char* FOVLocatorNode::RATE_NAME_SHORT = "ra"; +const char* FOVLocatorNode::RATE_NAME_LONG = "rate"; +MObject FOVLocatorNode::sRate; + +const int FOVLocatorNode::ACTIVE_COLOUR = 15; +const int FOVLocatorNode::INACTIVE_COLOUR = 12; +const float FOVLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char FOVLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK FOVLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[FOVLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, FOVLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the FOV Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + FOVLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + FOVLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// FOVLocatorNode::FOVLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +FOVLocatorNode::FOVLocatorNode() +{ +} + +//============================================================================== +// FOVLocatorNode::~FOVLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +FOVLocatorNode::~FOVLocatorNode() +{ +} + +//============================================================================= +// FOVLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* FOVLocatorNode::creator() +{ + return new FOVLocatorNode(); +} + +//============================================================================= +// FOVLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void FOVLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::CARSTART_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// FOVLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus FOVLocatorNode::initialize() +{ + MStatus status; + + MFnMessageAttribute msgAttr; + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnNumericAttribute numAttr; + sFOV = numAttr.create( FOV_NAME_LONG, FOV_NAME_SHORT, MFnNumericData::kFloat, 90.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.1f) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(180.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFOV ) ); + + sTime = numAttr.create( TIME_NAME_LONG, TIME_NAME_SHORT, MFnNumericData::kFloat, 2.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(10.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTime ) ); + + sRate = numAttr.create( RATE_NAME_LONG, RATE_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sRate ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// FOVLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void FOVLocatorNode::postConstructor() +{ +} + +//============================================================================= +// FOVLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& FOVLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* FOVLocatorNode::Export( MObject& fovLocatorNode ) +{ + MFnDagNode fnNode( fovLocatorNode ); + + if ( fnNode.typeId() == FOVLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::FOV ); + + float fov = 90.0f; + float time = 2.0f; + float rate = 0.04f; + + fnNode.findPlug( sFOV ).getValue( fov ); + fnNode.findPlug( sTime ).getValue( time ); + fnNode.findPlug( sRate ).getValue( rate ); + + unsigned long data[3]; + memcpy( data, &fov, sizeof(float) ); + memcpy( &(data[1]), &time, sizeof(float) ); + memcpy( &(data[2]), &rate, sizeof(float) ); + + locator->SetDataElements( data, 3 ); + locator->SetNumDataElements( 3 ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, fovLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/fovlocatornode.h b/tools/worldbuilder/code/nodes/fovlocatornode.h new file mode 100644 index 0000000..ac531a3 --- /dev/null +++ b/tools/worldbuilder/code/nodes/fovlocatornode.h @@ -0,0 +1,124 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: fovlocatornode.h +// +// Description: Blahblahblah +// +// History: 03/08/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef FOVLOCATORNODE_H +#define FOVLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK FOVLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class FOVLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + FOVLocatorNode(); + virtual ~FOVLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* FOV_NAME_SHORT; + static const char* FOV_NAME_LONG; + static MObject sFOV; + + static const char* TIME_NAME_SHORT; + static const char* TIME_NAME_LONG; + static MObject sTime; + + static const char* RATE_NAME_SHORT; + static const char* RATE_NAME_LONG; + static MObject sRate; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + FOVLocatorNode( const FOVLocatorNode& fovlocatornode ); + FOVLocatorNode& operator=( const FOVLocatorNode& fovlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// FOVLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void FOVLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// FOVLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const FOVLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //FOVLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/genericlocatornode.cpp b/tools/worldbuilder/code/nodes/genericlocatornode.cpp new file mode 100644 index 0000000..ef81a26 --- /dev/null +++ b/tools/worldbuilder/code/nodes/genericlocatornode.cpp @@ -0,0 +1,287 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: GenericLocatorNode.cpp +// +// Description: Implement GenericLocatorNode +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/GenericLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatorevents.h" +#include "../../../game/code/meta/locatortypes.h" + + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId GenericLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::GenericLocator ); +const char* GenericLocatorNode::stringId = "GenericLocatorNode"; + +const int GenericLocatorNode::ACTIVE_COLOUR = 15; +const int GenericLocatorNode::INACTIVE_COLOUR = 12; +const float GenericLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char GenericLocatorNode::sNewName[MAX_NAME_LEN]; + + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK GenericLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[GenericLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, GenericLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Generic Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + GenericLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + GenericLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// GenericLocatorNode::GenericLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +GenericLocatorNode::GenericLocatorNode() +{ +} + +//============================================================================== +// GenericLocatorNode::~GenericLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +GenericLocatorNode::~GenericLocatorNode() +{ +} + +//============================================================================= +// GenericLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* GenericLocatorNode::creator() +{ + return new GenericLocatorNode(); +} + +//============================================================================= +// GenericLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void GenericLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::GENERIC_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// GenericLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus GenericLocatorNode::initialize() +{ + return MStatus::kSuccess; +} + +//============================================================================= +// GenericLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void GenericLocatorNode::postConstructor() +{ +} + +//============================================================================= +// GenericLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& GenericLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* GenericLocatorNode::Export( MObject& genericLocatorNode ) +{ + MFnDagNode fnNode( genericLocatorNode ); + + if ( fnNode.typeId() == GenericLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + if ( fnNode.name().substring(0, 3) == MString("coin") ) + { + locator->SetType( LocatorType::COIN ); + } + else + { + locator->SetType( LocatorType::GENERIC ); + } + + locator->SetNumDataElements( 0 ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, genericLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/genericlocatornode.h b/tools/worldbuilder/code/nodes/genericlocatornode.h new file mode 100644 index 0000000..6a69682 --- /dev/null +++ b/tools/worldbuilder/code/nodes/genericlocatornode.h @@ -0,0 +1,108 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: genericlocatornode.h +// +// Description: Blahblahblah +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef GENERICLOCATORNODE_H +#define GENERICLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK GenericLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class GenericLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + GenericLocatorNode(); + virtual ~GenericLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& GenericLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + GenericLocatorNode( const GenericLocatorNode& genericlocatornode ); + GenericLocatorNode& operator=( const GenericLocatorNode& genericlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// GenericLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void GenericLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// GenericLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const GenericLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //GENERICLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/interiorentrancelocatornode.cpp b/tools/worldbuilder/code/nodes/interiorentrancelocatornode.cpp new file mode 100644 index 0000000..1765423 --- /dev/null +++ b/tools/worldbuilder/code/nodes/interiorentrancelocatornode.cpp @@ -0,0 +1,409 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: InteriorEntranceLocatorNode.cpp +// +// Description: Implement InteriorEntranceLocatorNode +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + + +//======================================== +// Project Includes +//======================================== +#include "nodes/InteriorEntranceLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "utility/transformmatrix.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId InteriorEntranceLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::InteriorEntranceLocator ); +const char* InteriorEntranceLocatorNode::stringId = "InteriorEntranceLocatorNode"; + +const int InteriorEntranceLocatorNode::ACTIVE_COLOUR = 15; +const int InteriorEntranceLocatorNode::INACTIVE_COLOUR = 12; +const float InteriorEntranceLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* InteriorEntranceLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* InteriorEntranceLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject InteriorEntranceLocatorNode::sTriggers; + +const char* InteriorEntranceLocatorNode::ZONE_NAME_SHORT = "z"; +const char* InteriorEntranceLocatorNode::ZONE_NAME_LONG = "zone"; +MObject InteriorEntranceLocatorNode::sZone; + +char InteriorEntranceLocatorNode::sNewName[MAX_NAME_LEN]; +char InteriorEntranceLocatorNode::sZoneName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK InteriorEntranceLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + SetDlgItemText( hWnd, IDC_EDIT3, "" ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[InteriorEntranceLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, InteriorEntranceLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Interior Entrance Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + InteriorEntranceLocatorNode::SetNewName( newName.asChar() ); + + //Do the zone name too... + GetDlgItemText( hWnd, IDC_EDIT3, name, InteriorEntranceLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a file name for the zone!"); + return false; + } + + InteriorEntranceLocatorNode::SetZoneName( name ); + + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + InteriorEntranceLocatorNode::SetNewName( "" ); + InteriorEntranceLocatorNode::SetZoneName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// InteriorEntranceLocatorNode::InteriorEntranceLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +InteriorEntranceLocatorNode::InteriorEntranceLocatorNode() +{ +} + +//============================================================================== +// InteriorEntranceLocatorNode::~InteriorEntranceLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +InteriorEntranceLocatorNode::~InteriorEntranceLocatorNode() +{ +} + +//============================================================================= +// InteriorEntranceLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* InteriorEntranceLocatorNode::creator() +{ + return new InteriorEntranceLocatorNode(); +} + +//============================================================================= +// InteriorEntranceLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void InteriorEntranceLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::INTERIOR_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + MPoint triggerLP; + triggerLP = triggerWP - thisWP; + + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawArrow( MPoint( 0, 0, 0 ), MPoint( 0, 0, -1 * WBConstants::Scale ), 5.0 ); + GLExt::drawD( SCALE, 0,1,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// InteriorEntranceLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus InteriorEntranceLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnTypedAttribute typAttr; + sZone = typAttr.create( ZONE_NAME_LONG, ZONE_NAME_SHORT, MFnData::kString, MObject::kNullObj, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sZone ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// InteriorEntranceLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void InteriorEntranceLocatorNode::postConstructor() +{ +} + +//============================================================================= +// InteriorEntranceLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& interiorEntranceLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* InteriorEntranceLocatorNode::Export( MObject& interiorEntranceLocatorNode ) +{ + MFnDagNode fnNode( interiorEntranceLocatorNode ); + + if ( fnNode.typeId() == InteriorEntranceLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::INTERIOR_ENTRANCE ); + + //The data here is the zone associated with this locator. + MString zone; + fnNode.findPlug( sZone ).getValue( zone ); + + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + + unsigned int length = (zone.length() / 4 + 1) + 3 * 3; //string + 3 vectors + + unsigned long* data; + + data = new unsigned long[ length ]; + unsigned int i; + for ( i = 0; i < length; ++i ) + { + data[i] = 0; + } + + memcpy( data, zone.asChar(), zone.length() ); + ((char*)(data))[zone.length()] = '\0'; + + unsigned int row; + for ( row = 0; row < 3; ++row ) + { + tlPoint point = hmatrix.GetRow( row ); + + memcpy( &data[(zone.length() / 4 + 1) + row * 3], &point.x, sizeof(float) * 3 ); + } + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, interiorEntranceLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + delete data; + + return locator; + } + + return NULL; +} + + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/interiorentrancelocatornode.h b/tools/worldbuilder/code/nodes/interiorentrancelocatornode.h new file mode 100644 index 0000000..c338e85 --- /dev/null +++ b/tools/worldbuilder/code/nodes/interiorentrancelocatornode.h @@ -0,0 +1,151 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: interiorentrancelocatornode.h +// +// Description: Blahblahblah +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef INTERIORENTRANCELOCATORNODE_H +#define INTERIORENTRANCELOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK InteriorEntranceLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + + +class InteriorEntranceLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + InteriorEntranceLocatorNode(); + virtual ~InteriorEntranceLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& interiorEntranceLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + static void SetZoneName( const char* name ); + static const char* const GetZoneName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* ZONE_NAME_SHORT; + static const char* ZONE_NAME_LONG; + static MObject sZone; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + static char sZoneName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + InteriorEntranceLocatorNode( const InteriorEntranceLocatorNode& interiorentrancelocatornode ); + InteriorEntranceLocatorNode& operator=( const InteriorEntranceLocatorNode& interiorentrancelocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// InteriorEntranceLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void InteriorEntranceLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// InteriorEntranceLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const InteriorEntranceLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// InteriorEntranceLocatorNode::SetZoneName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void InteriorEntranceLocatorNode::SetZoneName( const char* name ) +{ + strncpy( sZoneName, name, MAX_NAME_LEN); +} + +//============================================================================= +// InteriorEntranceLocatorNode::GetZoneName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const InteriorEntranceLocatorNode::GetZoneName() +{ + return sZoneName; +} + + +#endif //INTERIORENTRANCELOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/occlusionlocatornode.cpp b/tools/worldbuilder/code/nodes/occlusionlocatornode.cpp new file mode 100644 index 0000000..2e93554 --- /dev/null +++ b/tools/worldbuilder/code/nodes/occlusionlocatornode.cpp @@ -0,0 +1,374 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: OcclusionLocatorNode.cpp +// +// Description: Implement OcclusionLocatorNode +// +// History: 28/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/OcclusionLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId OcclusionLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::OcclusionLocator ); +const char* OcclusionLocatorNode::stringId = "OcclusionLocatorNode"; + +const int OcclusionLocatorNode::ACTIVE_COLOUR = 15; +const int OcclusionLocatorNode::INACTIVE_COLOUR = 12; +const float OcclusionLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* OcclusionLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* OcclusionLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject OcclusionLocatorNode::sTriggers; + +char OcclusionLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK OcclusionLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[OcclusionLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, OcclusionLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Occlusion Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + OcclusionLocatorNode::SetNewName( newName.asChar() ); + + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + OcclusionLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// OcclusionLocatorNode::OcclusionLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +OcclusionLocatorNode::OcclusionLocatorNode() +{ +} + +//============================================================================== +// OcclusionLocatorNode::~OcclusionLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +OcclusionLocatorNode::~OcclusionLocatorNode() +{ +} + +//============================================================================= +// OcclusionLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* OcclusionLocatorNode::creator() +{ + return new OcclusionLocatorNode(); +} + +//============================================================================= +// OcclusionLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void OcclusionLocatorNode::draw( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::OCCLUSION_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + MPoint triggerLP; + triggerLP = triggerWP - thisWP; + + if ( i == 0 ) + { + //This is the triggering volume + view.setDrawColor( 3, M3dView::kActiveColors ); + } + else + { + //These are the occluding volumes. + view.setDrawColor( 8, M3dView::kActiveColors ); + } + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawO( SCALE, 0,1,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// OcclusionLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus OcclusionLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// OcclusionLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void OcclusionLocatorNode::postConstructor() +{ +} + +//============================================================================= +// OcclusionLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& occlusionLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* OcclusionLocatorNode::Export( MObject& occlusionLocatorNode ) +{ + MFnDagNode fnNode( occlusionLocatorNode ); + + if ( fnNode.typeId() == OcclusionLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::OCCLUSION ); + + locator->SetNumDataElements( 0 ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, occlusionLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + + //Hold onto the visiblers until the end. + tlDataChunk* visiblers = new tlDataChunk; + unsigned long numVisiblers = 0; + unsigned long numRegular = 0; + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + MFnDagNode fnTrigNode( sources[ i ].node() ); + + if ( fnTrigNode.name().substring( 0, 0 ) == MString("V") ) + { + visiblers->AppendSubChunk( trigger, 0 ); + ++numVisiblers; + } + else + { + locator->AppendSubChunk( trigger ); + ++numRegular; + } + + } + + + //Subtract one from the num regular to not cound the primary trigger. + numRegular--; + + //Now add the visiblers to the end of the list. + if ( numVisiblers ) + { + visiblers->TransferSubChunks( locator ); + + //Record how many of these triggers are regular. + locator->SetDataElements( &numRegular, 1 ); + locator->SetNumDataElements( 1 ); + } + + locator->SetNumTriggers( i ); + + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/occlusionlocatornode.h b/tools/worldbuilder/code/nodes/occlusionlocatornode.h new file mode 100644 index 0000000..0c3d21e --- /dev/null +++ b/tools/worldbuilder/code/nodes/occlusionlocatornode.h @@ -0,0 +1,112 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: occlusionlocatornode.h +// +// Description: Blahblahblah +// +// History: 28/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef OCCLUSIONLOCATORNODE_H +#define OCCLUSIONLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK OcclusionLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class OcclusionLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + OcclusionLocatorNode(); + virtual ~OcclusionLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& occlusionLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + OcclusionLocatorNode( const OcclusionLocatorNode& occlusionlocatornode ); + OcclusionLocatorNode& operator=( const OcclusionLocatorNode& occlusionlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// OcclusionLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void OcclusionLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// OcclusionLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const OcclusionLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //OCCLUSIONLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/pedgrouplocator.cpp b/tools/worldbuilder/code/nodes/pedgrouplocator.cpp new file mode 100644 index 0000000..3ec6477 --- /dev/null +++ b/tools/worldbuilder/code/nodes/pedgrouplocator.cpp @@ -0,0 +1,371 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: PedGroupLocatorNode.cpp +// +// Description: Implement PedGroupLocatorNode +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/PedGroupLocator.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "utility/transformmatrix.h" +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId PedGroupLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::PedGroupLocator ); +const char* PedGroupLocatorNode::stringId = "PedGroupLocatorNode"; + +const int PedGroupLocatorNode::ACTIVE_COLOUR = 15; +const int PedGroupLocatorNode::INACTIVE_COLOUR = 12; +const float PedGroupLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* PedGroupLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* PedGroupLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject PedGroupLocatorNode::sTriggers; + +const char* PedGroupLocatorNode::GROUP_NAME_SHORT = "grp"; +const char* PedGroupLocatorNode::GROUP_NAME_LONG = "group"; +MObject PedGroupLocatorNode::sGroup; + +char PedGroupLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK PedGroupLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[PedGroupLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, PedGroupLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Ped Group Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + PedGroupLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + PedGroupLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// PedGroupLocatorNode::PedGroupLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +PedGroupLocatorNode::PedGroupLocatorNode() +{ +} + +//============================================================================== +// PedGroupLocatorNode::~PedGroupLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +PedGroupLocatorNode::~PedGroupLocatorNode() +{ +} + +//============================================================================= +// PedGroupLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* PedGroupLocatorNode::creator() +{ + return new PedGroupLocatorNode(); +} + +//============================================================================= +// PedGroupLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void PedGroupLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::DIRECTIONAL_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + //Need to undo funny transformations... + MMatrix mat; + mat.setToIdentity(); + + MObject transform; + transform = fnNode.parent( 0 ); + MFnDependencyNode transNode( transform ); + MDagPath transPath; + MExt::FindDagNodeByName( &transPath, transNode.name() ); + MFnTransform fnTransform( transPath ); + + mat = fnTransform.transformationMatrix(); + + mat = mat.inverse(); + + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MPoint triggerLP; + triggerLP = triggerWP; // - thisWP; + + triggerLP *= mat; + + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawStickMan( SCALE, 0, 1, 0, 5.0 ); + GLExt::drawStickMan( SCALE, 0.25, 1, 0, 5.0 ); + GLExt::drawStickMan( SCALE, -0.25, 1, 0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// PedGroupLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus PedGroupLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnNumericAttribute numericAttr; + sGroup = numericAttr.create( GROUP_NAME_LONG, GROUP_NAME_SHORT, MFnNumericData::kInt, 0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sGroup ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// PedGroupLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void PedGroupLocatorNode::postConstructor() +{ +} + +//============================================================================= +// PedGroupLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& directionalLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* PedGroupLocatorNode::Export( MObject& pedGroupLocatorNode ) +{ + MFnDagNode fnNode( pedGroupLocatorNode ); + + if ( fnNode.typeId() == PedGroupLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::PED_GROUP ); + + //The data here is the event associated with this locator. + int group; + fnNode.findPlug( sGroup ).getValue( group ); + + unsigned long data = group; + locator->SetDataElements( &data, 1 ); + locator->SetNumDataElements( 1 ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, pedGroupLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/pedgrouplocator.h b/tools/worldbuilder/code/nodes/pedgrouplocator.h new file mode 100644 index 0000000..e70aded --- /dev/null +++ b/tools/worldbuilder/code/nodes/pedgrouplocator.h @@ -0,0 +1,115 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: pedgrouplocatornode.h +// +// Description: Blahblahblah +// +// History: 29/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef PEDGROUPLOCATORNODE_H +#define PEDGROUPLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK PedGroupLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class PedGroupLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + PedGroupLocatorNode(); + virtual ~PedGroupLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& interiorEntranceLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* GROUP_NAME_SHORT; + static const char* GROUP_NAME_LONG; + static MObject sGroup; + +private: + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + PedGroupLocatorNode( const PedGroupLocatorNode& pedgrouplocatornode ); + PedGroupLocatorNode& operator=( const PedGroupLocatorNode& pedgrouplocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// PedGroupLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void PedGroupLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// PedGroupLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const PedGroupLocatorNode::GetNewName() +{ + return sNewName; +} + +#endif //PEDGROUPLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/railcamlocatornode.cpp b/tools/worldbuilder/code/nodes/railcamlocatornode.cpp new file mode 100644 index 0000000..63beaf1 --- /dev/null +++ b/tools/worldbuilder/code/nodes/railcamlocatornode.cpp @@ -0,0 +1,584 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: RailCamLocatorNode.cpp +// +// Description: Implement RailCamLocatorNode +// +// History: 18/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> +#include <p3d/pointcamera.hpp> + +//======================================== +// Project Includes +//======================================== +#include "RailCamLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "nodes/triggervolumenode.h" +#include "utility/nodehelper.h" + +#include "gameengine/gameengine.h" +#include "gameengine/wbcamtarget.h" + +#include "resources/resource.h" + +#include "../../../game/code/camera/railcam.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId RailCamLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::RailCamLocator ); +const char* RailCamLocatorNode::stringId = "RailCamLocatorNode"; + +const int RailCamLocatorNode::ACTIVE_COLOUR = 15; +const int RailCamLocatorNode::INACTIVE_COLOUR = 12; +const float RailCamLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* RailCamLocatorNode::RAIL_NAME_SHORT = "rail"; +const char* RailCamLocatorNode::RAIL_NAME_LONG = "camRail"; +MObject RailCamLocatorNode::sRail; + +const char* RailCamLocatorNode::BEHAVIOUR_NAME_SHORT = "behav"; +const char* RailCamLocatorNode::BEHAVIOUR_NAME_LONG = "behaviour"; +MObject RailCamLocatorNode::sBehaviour; + +const char* RailCamLocatorNode::MIN_RADIUS_NAME_SHORT = "minR"; +const char* RailCamLocatorNode::MIN_RADIUS_NAME_LONG = "minRadius"; +MObject RailCamLocatorNode::sMinRadius; + +const char* RailCamLocatorNode::MAX_RADIUS_NAME_SHORT = "maxR"; +const char* RailCamLocatorNode::MAX_RADIUS_NAME_LONG = "maxRadius"; +MObject RailCamLocatorNode::sMaxRadius; + +const char* RailCamLocatorNode::TRACK_RAIL_NAME_SHORT = "trkRl"; +const char* RailCamLocatorNode::TRACK_RAIL_NAME_LONG = "trackRail"; +MObject RailCamLocatorNode::sTrackRail; + +const char* RailCamLocatorNode::TRACK_DIST_NAME_SHORT = "tDst"; +const char* RailCamLocatorNode::TRACK_DIST_NAME_LONG = "trackDist"; +MObject RailCamLocatorNode::sTrackDist; + +const char* RailCamLocatorNode::REVERSE_SENSE_NAME_SHORT ="rvsns"; +const char* RailCamLocatorNode::REVERSE_SENSE_NAME_LONG = "reverseSense"; +MObject RailCamLocatorNode::sReverseSense; + + +const char* RailCamLocatorNode::FOV_NAME_SHORT = "fov"; +const char* RailCamLocatorNode::FOV_NAME_LONG = "fieldOfView"; +MObject RailCamLocatorNode::sFOV; + +const char* RailCamLocatorNode::FACING_OFFSET_NAME_SHORT = "facoff"; +const char* RailCamLocatorNode::FACING_OFFSET_NAME_LONG = "facingOffset"; +MObject RailCamLocatorNode::sFacingOffset; + +const char* RailCamLocatorNode::AXIS_PLAY_NAME_SHORT = "axsply"; +const char* RailCamLocatorNode::AXIS_PLAY_NAME_LONG = "axisPlay"; +MObject RailCamLocatorNode::sAxisPlay; + +const char* RailCamLocatorNode::ACTIVE_NAME_SHORT = "act"; +const char* RailCamLocatorNode::ACTIVE_NAME_LONG = "active"; +MObject RailCamLocatorNode::sActive; + +const char* RailCamLocatorNode::TARGET_NAME_SHORT = "trg"; +const char* RailCamLocatorNode::TARGET_NAME_LONG = "target"; +MObject RailCamLocatorNode::sTarget; + +const char* RailCamLocatorNode::POS_LAG_NAME_SHORT = "plg"; +const char* RailCamLocatorNode::POS_LAG_NAME_LONG = "positionLag"; +MObject RailCamLocatorNode::sPositionLag; + +const char* RailCamLocatorNode::TARGET_LAG_NAME_SHORT = "trglg"; +const char* RailCamLocatorNode::TARGET_LAG_NAME_LONG = "targetLag"; +MObject RailCamLocatorNode::sTargetLag; + +const char* RailCamLocatorNode::TRANSITION_TO_RATE_NAME_LONG = "transitionTo"; +const char* RailCamLocatorNode::TRANSITION_TO_RATE_NAME_SHORT = "trnto"; +MObject RailCamLocatorNode::sTransitionToRate; + +const char* RailCamLocatorNode::NOFOV_NAME_LONG = "noFOV"; +const char* RailCamLocatorNode::NOFOV_NAME_SHORT = "nf"; +MObject RailCamLocatorNode::sNoFOV; + +const char* RailCamLocatorNode::CAR_ONLY_NAME_LONG = "carOnly"; +const char* RailCamLocatorNode::CAR_ONLY_NAME_SHORT = "co"; +MObject RailCamLocatorNode::sCarOnly; + +const char* RailCamLocatorNode::ON_FOOT_ONLY_NAME_LONG = "onFootOnly"; +const char* RailCamLocatorNode::ON_FOOT_ONLY_NAME_SHORT = "ofo"; +MObject RailCamLocatorNode::sOnFootOnly; + +const char* RailCamLocatorNode::CUTALL_NAME_LONG = "cutInOut"; +const char* RailCamLocatorNode::CUTALL_NAME_SHORT = "cin"; +MObject RailCamLocatorNode::sCutAll; + +const char* RailCamLocatorNode::RESET_NAME_LONG = "reset"; +const char* RailCamLocatorNode::RESET_NAME_SHORT = "rst"; +MObject RailCamLocatorNode::sReset; + +char RailCamLocatorNode::sNewName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK RailCamLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[RailCamLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, RailCamLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the RailCam Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + RailCamLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + RailCamLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//***************************************************************************** +// +// Public Member Functions +// +//***************************************************************************** + +//============================================================================= +// RailCamLocatorNode::RailCamLocatorNode +//============================================================================= +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================= +RailCamLocatorNode::RailCamLocatorNode() +{ + mRailCam = new RailCam(); + mRailCam->AddRef(); + mRailCam->SetPlayerID( 0 ); + + mRailCam->SetCamera( new tPointCamera() ); + + mCamTarget = new WBCamTarget(); +} + +//============================================================================= +// RailCamLocatorNode::~RailCamLocatorNode +//============================================================================= +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================= +RailCamLocatorNode::~RailCamLocatorNode() +{ + mRailCam->Release(); + mRailCam = NULL; + + if ( mCamTarget ) + { + delete mCamTarget; + } +} + +//============================================================================= +// RailCamLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* RailCamLocatorNode::creator() +{ + return new RailCamLocatorNode(); +} + +//============================================================================= +// RailCamLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void RailCamLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::RAILCAM_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + GameEngine::GetInstance()->UpdateRailCam( thisMObject() ); + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// RailCamLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus RailCamLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sRail = msgAttr.create( RAIL_NAME_LONG, RAIL_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sRail ) ); + + MFnEnumAttribute enumAttr; + sBehaviour = enumAttr.create( BEHAVIOUR_NAME_LONG, BEHAVIOUR_NAME_SHORT, RailCam::PROJECTION, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( enumAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.setWritable( true ) ); + + unsigned int i; + for ( i = 1; i < RailCam::NUM_BEHAVIOUR; ++i ) + { + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( RailCam::BehaviourNames[i-1] ), i ) ); + } + RETURN_STATUS_ON_FAILURE( addAttribute( sBehaviour ) ); + + MFnNumericAttribute numericAttr; + sMinRadius = numericAttr.create( MIN_RADIUS_NAME_LONG, MIN_RADIUS_NAME_SHORT, MFnNumericData::kFloat, 1.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(30.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sMinRadius ) ); + + sMaxRadius = numericAttr.create( MAX_RADIUS_NAME_LONG, MAX_RADIUS_NAME_SHORT, MFnNumericData::kFloat, 2.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(30.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sMaxRadius ) ); + + sTrackRail = numericAttr.create( TRACK_RAIL_NAME_LONG, TRACK_RAIL_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTrackRail ) ); + + sTrackDist = numericAttr.create( TRACK_DIST_NAME_LONG, TRACK_DIST_NAME_SHORT, MFnNumericData::kFloat, 0.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(-5.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(5.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setDefault( 0.0f ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTrackDist ) ); + + sReverseSense = numericAttr.create( REVERSE_SENSE_NAME_LONG, REVERSE_SENSE_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sReverseSense ) ); + + sFOV = numericAttr.create( FOV_NAME_LONG, FOV_NAME_SHORT, MFnNumericData::kInt, 90, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(180.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFOV ) ); + + sFacingOffset = numericAttr.create( FACING_OFFSET_NAME_LONG, FACING_OFFSET_NAME_SHORT, MFnNumericData::k3Float, 0.0f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFacingOffset ) ); + + sAxisPlay = numericAttr.create( AXIS_PLAY_NAME_LONG, AXIS_PLAY_NAME_SHORT, MFnNumericData::k3Float, 0.0f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sAxisPlay ) ); + + sActive = numericAttr.create( ACTIVE_NAME_LONG, ACTIVE_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sActive ) ); + + MFnTypedAttribute typedAttr; + sTarget = typedAttr.create( TARGET_NAME_LONG, TARGET_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTarget ) ); + + sPositionLag = numericAttr.create( POS_LAG_NAME_LONG, POS_LAG_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sPositionLag ) ); + + sTargetLag = numericAttr.create( TARGET_LAG_NAME_LONG, TARGET_LAG_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTargetLag ) ); + + sTransitionToRate = numericAttr.create( TRANSITION_TO_RATE_NAME_LONG, TRANSITION_TO_RATE_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTransitionToRate ) ); + + sNoFOV = numericAttr.create( NOFOV_NAME_LONG, NOFOV_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sNoFOV ) ); + + sCarOnly = numericAttr.create( CAR_ONLY_NAME_LONG, CAR_ONLY_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sCarOnly ) ); + + sOnFootOnly = numericAttr.create( ON_FOOT_ONLY_NAME_LONG, ON_FOOT_ONLY_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sOnFootOnly ) ); + + sCutAll = numericAttr.create( CUTALL_NAME_LONG, CUTALL_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sCutAll ) ); + + sReset = numericAttr.create( RESET_NAME_LONG, RESET_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sReset ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// RailCamLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void RailCamLocatorNode::postConstructor() +{ +} + +//============================================================================= +// RailCamLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& railCamLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* RailCamLocatorNode::Export( MObject& railCamLocatorNode ) +{ + MFnDagNode fnNode( railCamLocatorNode ); + + if ( fnNode.typeId() == RailCamLocatorNode::id ) + { + tlWBRailCamChunk* railChunk = new tlWBRailCamChunk(); + assert( railChunk ); + + railChunk->SetName( fnNode.name().asChar() ); + + int behaviour; + fnNode.findPlug( sBehaviour ).getValue( behaviour ); + railChunk->SetBehaviour( (RailCam::Behaviour)(behaviour) ); + + float minRad; + fnNode.findPlug( sMinRadius ).getValue( minRad ); + railChunk->SetMinRadius( minRad ); + + float maxRad; + fnNode.findPlug( sMaxRadius ).getValue( maxRad ); + railChunk->SetMaxRadius( maxRad ); + + bool trackRail; + fnNode.findPlug( sTrackRail ).getValue( trackRail ); + railChunk->SetTrackRail( trackRail ? 1 : 0 ); + + float trackDist; + fnNode.findPlug( sTrackDist ).getValue( trackDist ); + railChunk->SetTrackDist( trackDist ); + + bool reverseSense; + fnNode.findPlug( sReverseSense ).getValue( reverseSense ); + railChunk->SetReverseSense( reverseSense ? 1 : 0 ); + + float fov; + fnNode.findPlug( sFOV ).getValue( fov ); + railChunk->SetFOV( fov ); + + float x, y, z; + fnNode.findPlug( sFacingOffset ).child( 0 ).getValue( x ); + fnNode.findPlug( sFacingOffset ).child( 1 ).getValue( y ); + fnNode.findPlug( sFacingOffset ).child( 2 ).getValue( z ); + railChunk->SetTargetOffset( tlPoint( x, y, z ) ); + + // THIS IS A HACK. Since we're not going to support axis play. We're + // going to hide the transition rate in the data. Sorry. +// fnNode.findPlug( sAxisPlay ).child( 0 ).getValue( x ); +// fnNode.findPlug( sAxisPlay ).child( 1 ).getValue( y ); +// fnNode.findPlug( sAxisPlay ).child( 2 ).getValue( z ); + fnNode.findPlug( sTransitionToRate ).getValue( x ); //transition rate. + + //Now we're hiding the flags in the y.. THIS SUCKS! + bool noF = false; + fnNode.findPlug( sNoFOV ).getValue( noF ); + y = (float)( noF ? 1 : 0 ); + + //This just GETS WORSE! + int values = 0; + + bool carOnly = false; + fnNode.findPlug( sCarOnly ).getValue( carOnly ); + values |= ( carOnly ? 0x00000001 : 0 ); + + bool cut = false; + fnNode.findPlug( sCutAll ).getValue( cut ); + values |= ( cut ? 0x00000002 : 0 ); + + bool reset = false; + fnNode.findPlug( sReset ).getValue( reset ); + values |= ( reset ? 0x00000004 : 0 ); + + bool onFootOnly = false; + fnNode.findPlug( sOnFootOnly ).getValue( onFootOnly ); + values |= ( onFootOnly ? 0x00000008 : 0 ); + + if( carOnly && onFootOnly ) + { + MExt::DisplayError( "Rail Camera: %s has onFootOnly and carOnly flags set!\n", fnNode.name().asChar() ); + } + + z = (float)values; + railChunk->SetAxisPlay( tlPoint( x, y, z ) ); + + float posLag; + fnNode.findPlug( sPositionLag ).getValue( posLag ); + railChunk->SetPositionLag( posLag ); + + float targLag; + fnNode.findPlug( sTargetLag ).getValue( targLag ); + railChunk->SetTargetLag( targLag ); + + return railChunk; + } + + return NULL; +} + +//***************************************************************************** +// +// Private Member Functions +// +//***************************************************************************** diff --git a/tools/worldbuilder/code/nodes/railcamlocatornode.h b/tools/worldbuilder/code/nodes/railcamlocatornode.h new file mode 100644 index 0000000..ce89b03 --- /dev/null +++ b/tools/worldbuilder/code/nodes/railcamlocatornode.h @@ -0,0 +1,232 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: railcamlocatornode.h +// +// Description: Blahblahblah +// +// History: 18/07/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef RAILCAMLOCATORNODE_H +#define RAILCAMLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; +class RailCam; +class WBCamTarget; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK RailCamLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class RailCamLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + RailCamLocatorNode(); + virtual ~RailCamLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& railCamLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* RAIL_NAME_SHORT; + static const char* RAIL_NAME_LONG; + static MObject sRail; + + static const char* BEHAVIOUR_NAME_SHORT; + static const char* BEHAVIOUR_NAME_LONG; + static MObject sBehaviour; + + static const char* MIN_RADIUS_NAME_SHORT; + static const char* MIN_RADIUS_NAME_LONG; + static MObject sMinRadius; + + static const char* MAX_RADIUS_NAME_SHORT; + static const char* MAX_RADIUS_NAME_LONG; + static MObject sMaxRadius; + + static const char* TRACK_RAIL_NAME_SHORT; + static const char* TRACK_RAIL_NAME_LONG; + static MObject sTrackRail; + + static const char* TRACK_DIST_NAME_SHORT; + static const char* TRACK_DIST_NAME_LONG; + static MObject sTrackDist; + + static const char* REVERSE_SENSE_NAME_SHORT; + static const char* REVERSE_SENSE_NAME_LONG; + static MObject sReverseSense; + + + static const char* FOV_NAME_SHORT; + static const char* FOV_NAME_LONG; + static MObject sFOV; + + static const char* FACING_OFFSET_NAME_SHORT; + static const char* FACING_OFFSET_NAME_LONG; + static MObject sFacingOffset; + + static const char* AXIS_PLAY_NAME_SHORT; + static const char* AXIS_PLAY_NAME_LONG; + static MObject sAxisPlay; + + static const char* ACTIVE_NAME_SHORT; + static const char* ACTIVE_NAME_LONG; + static MObject sActive; + + static const char* TARGET_NAME_SHORT; + static const char* TARGET_NAME_LONG; + static MObject sTarget; + + static const char* POS_LAG_NAME_SHORT; + static const char* POS_LAG_NAME_LONG; + static MObject sPositionLag; + + static const char* TARGET_LAG_NAME_SHORT; + static const char* TARGET_LAG_NAME_LONG; + static MObject sTargetLag; + + static const char* TRANSITION_TO_RATE_NAME_LONG; + static const char* TRANSITION_TO_RATE_NAME_SHORT; + static MObject sTransitionToRate; + + static const char* NOFOV_NAME_LONG; + static const char* NOFOV_NAME_SHORT; + static MObject sNoFOV; + + static const char* CAR_ONLY_NAME_LONG; + static const char* CAR_ONLY_NAME_SHORT; + static MObject sCarOnly; + + static const char* ON_FOOT_ONLY_NAME_LONG; + static const char* ON_FOOT_ONLY_NAME_SHORT; + static MObject sOnFootOnly; + + static const char* CUTALL_NAME_LONG; + static const char* CUTALL_NAME_SHORT; + static MObject sCutAll; + + static const char* RESET_NAME_LONG; + static const char* RESET_NAME_SHORT; + static MObject sReset; + + //MPxNode stuff... + RailCam* GetRailCam(); + WBCamTarget* GetTarget(); + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + RailCam* mRailCam; + WBCamTarget* mCamTarget; + + //Prevent wasteful constructor creation. + RailCamLocatorNode( const RailCamLocatorNode& eventlocatornode ); + RailCamLocatorNode& operator=( const RailCamLocatorNode& railCamlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// RailCamLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void RailCamLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// RailCamLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const RailCamLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// RailCamLocatorNode::GetRailCam +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: RailCam +// +//============================================================================= +inline RailCam* RailCamLocatorNode::GetRailCam() +{ + return mRailCam; +} + +//============================================================================= +// RailCamLocatorNode::GetTarget +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: WBCamTarget +// +//============================================================================= +inline WBCamTarget* RailCamLocatorNode::GetTarget() +{ + return mCamTarget; +} + +#endif //RAILCAMLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/scriptlocatornode.cpp b/tools/worldbuilder/code/nodes/scriptlocatornode.cpp new file mode 100644 index 0000000..93d5c67 --- /dev/null +++ b/tools/worldbuilder/code/nodes/scriptlocatornode.cpp @@ -0,0 +1,377 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: ScriptLocatorNode.cpp +// +// Description: Implement ScriptLocatorNode +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/ScriptLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatorevents.h" +#include "../../../game/code/meta/locatortypes.h" + +#define HIINT(x) (((int)((x)>>32) & 0xFFFFFFFF)) +#define LOINT(x) ((int)x) + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId ScriptLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::ScriptLocator ); +const char* ScriptLocatorNode::stringId = "ScriptLocatorNode"; + +const int ScriptLocatorNode::ACTIVE_COLOUR = 15; +const int ScriptLocatorNode::INACTIVE_COLOUR = 12; +const float ScriptLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* ScriptLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* ScriptLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject ScriptLocatorNode::sTriggers; + +const char* ScriptLocatorNode::SCRIPT_NAME_SHORT = "s"; +const char* ScriptLocatorNode::SCRIPT_NAME_LONG = "script"; +MObject ScriptLocatorNode::sScript; + +char ScriptLocatorNode::sNewName[MAX_NAME_LEN]; +char ScriptLocatorNode::sScriptName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK ScriptLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + SetDlgItemText( hWnd, IDC_EDIT3, "" ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[ScriptLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, ScriptLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Script Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + ScriptLocatorNode::SetNewName( newName.asChar() ); + + //Do the scripte name too... + GetDlgItemText( hWnd, IDC_EDIT3, name, ScriptLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a script name!"); + return false; + } + + ScriptLocatorNode::SetScriptName( name ); + + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + ScriptLocatorNode::SetNewName( "" ); + ScriptLocatorNode::SetScriptName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// ScriptLocatorNode::ScriptLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ScriptLocatorNode::ScriptLocatorNode() +{ +} + +//============================================================================== +// ScriptLocatorNode::~ScriptLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ScriptLocatorNode::~ScriptLocatorNode() +{ +} + +//============================================================================= +// ScriptLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* ScriptLocatorNode::creator() +{ + return new ScriptLocatorNode(); +} + +//============================================================================= +// ScriptLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void ScriptLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::SCRIPT_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + MPoint triggerLP; + triggerLP = triggerWP - thisWP; + + //TEMP + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawS( SCALE, 0,1,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// ScriptLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus ScriptLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnTypedAttribute typedAttr; + sScript = typedAttr.create( SCRIPT_NAME_LONG, SCRIPT_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sScript ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// ScriptLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void ScriptLocatorNode::postConstructor() +{ +} + +//============================================================================= +// ScriptLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& ScriptLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* ScriptLocatorNode::Export( MObject& scriptLocatorNode ) +{ + MFnDagNode fnNode( scriptLocatorNode ); + + if ( fnNode.typeId() == ScriptLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::SCRIPT ); + + //The data here is the event associated with this locator. + MString script; + fnNode.findPlug( sScript ).getValue( script ); + + unsigned int length = (script.length() / 4 + 1); + + unsigned long* data = new unsigned long[length]; + memset(data, 0, length * 4); + memcpy( data, script.asChar(), script.length() ); + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + delete[] data; + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, scriptLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/scriptlocatornode.h b/tools/worldbuilder/code/nodes/scriptlocatornode.h new file mode 100644 index 0000000..b7586ba --- /dev/null +++ b/tools/worldbuilder/code/nodes/scriptlocatornode.h @@ -0,0 +1,149 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: scriptlocatornode.h +// +// Description: Blahblahblah +// +// History: 27/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef SCRIPTLOCATORNODE_H +#define SCRIPTLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK ScriptLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class ScriptLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + ScriptLocatorNode(); + virtual ~ScriptLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static void SetScriptName( const char* name ); + static const char* const GetScriptName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* SCRIPT_NAME_SHORT; + static const char* SCRIPT_NAME_LONG; + static MObject sScript; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + static char sScriptName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + ScriptLocatorNode( const ScriptLocatorNode& scriptlocatornode ); + ScriptLocatorNode& operator=( const ScriptLocatorNode& scriptlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// ScriptLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ScriptLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// ScriptLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ScriptLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// ScriptLocatorNode::SetScriptName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ScriptLocatorNode::SetScriptName( const char* name ) +{ + strncpy( sScriptName, name, MAX_NAME_LEN); +} + +//============================================================================= +// ScriptLocatorNode::GetScriptName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ScriptLocatorNode::GetScriptName() +{ + return sScriptName; +} +#endif //SCRIPTLOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/splinelocatornode.cpp b/tools/worldbuilder/code/nodes/splinelocatornode.cpp new file mode 100644 index 0000000..14765be --- /dev/null +++ b/tools/worldbuilder/code/nodes/splinelocatornode.cpp @@ -0,0 +1,439 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: SplineLocatorNode.cpp +// +// Description: Implement SplineLocatorNode +// +// History: 05/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/SplineLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/mext.h" +#include "utility/glext.h" +#include "nodes/triggervolumenode.h" +#include "nodes/wbspline.h" +#include "nodes/railcamlocatornode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +const char* SplineLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* SplineLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject SplineLocatorNode::sTriggers; + +const char* SplineLocatorNode::SPLINE_NAME_LONG = "spline"; +const char* SplineLocatorNode::SPLINE_NAME_SHORT = "spl"; +MObject SplineLocatorNode::sSpline; + +const char* SplineLocatorNode::CAMERA_NAME_LONG = "camera"; +const char* SplineLocatorNode::CAMERA_NAME_SHORT = "cam"; +MObject SplineLocatorNode::sCamera; + +const char* SplineLocatorNode::IS_COIN_SHORT = "ic"; +const char* SplineLocatorNode::IS_COIN_LONG = "isCoin"; +MObject SplineLocatorNode::sIsCoin; + + +const char* SplineLocatorNode::stringId = "SplineLocatorNode"; +MTypeId SplineLocatorNode::id = WBConstants::NodeIDs::SplineLocator; + + +MPointArray GetCoinPoints( MObject& nurbsCurve, MObject& locator, bool justWP ) +{ + MFnDagNode fnDagNode( nurbsCurve ); + MDagPath dagPath; + fnDagNode.getPath( dagPath ); + + MStatus status; + + MFnNurbsCurve fnNurbs( dagPath, &status ); + assert( status ); + + const char* name = fnNurbs.name().asChar(); + + MPointArray points; + + if ( status ) + { + int numCVs = fnNurbs.numCVs( &status ); + assert( status ); + + //Get the number of coins + int numCoins = 0; + fnDagNode.findPlug( MString("numCoins") ).getValue( numCoins ); + assert( numCoins ); + + if ( numCoins == 0 ) + { + MExt::DisplayError( "Coin spline: %s has no coins!", fnDagNode.name().asChar() ); + } + else + { + //Need to undo funny transformations... + MMatrix mat; + mat.setToIdentity(); + + MObject transform; + MFnDependencyNode locDepNode( locator ); + MDagPath locatorDagPath; + MExt::FindDagNodeByName( &locatorDagPath, locDepNode.name() ); + MFnDagNode locDagNode( locatorDagPath ); + + const char* otherName = locDagNode.name().asChar(); + + transform = locDagNode.parent( 0 ); + MFnDependencyNode transNode( transform ); + MDagPath transPath; + MExt::FindDagNodeByName( &transPath, transNode.name() ); + MFnTransform fnTransform( transPath ); + + const char* nameHere = fnTransform.name().asChar(); + + MFnTransform splineTrans( dagPath ); //This is the splines transform. + MPoint splinePos( splineTrans.translation( MSpace::kWorld ) ); + + + mat = fnTransform.transformationMatrix(); + + mat = mat.inverse(); + + double numCoinSpans = fnNurbs.numSpans(); + + double coinsPerFullSpan = (double)numCoins / numCoinSpans; + + //Draw a coin at even intervals. + double interval = 1.0 / coinsPerFullSpan; + + double i; + for ( i = 0; i < numCoins; ++i ) + { + MPoint point; + fnNurbs.getPointAtParam( interval * i, point, MSpace::kWorld ); + + if ( !justWP ) + { + //Put in world space + point *= mat; + point += splinePos; + } + + points.append( point ); + } + } + } + + return points; +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// SplineLocatorNode::SplineLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SplineLocatorNode::SplineLocatorNode() +{ +} + +//============================================================================== +// SplineLocatorNode::~SplineLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +SplineLocatorNode::~SplineLocatorNode() +{ +} + +//============================================================================= +// SplineLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void SplineLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + MStatus status; + MFnDependencyNode fnNode( thisMObject() ); + bool isCoins = false; + fnNode.findPlug( sIsCoin ).getValue( isCoins ); + if ( isCoins ) + { + + const char* name = fnNode.name().asChar(); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + //Get the attached Maya spline. + MPlugArray sources, targets; + //Get the spline associated with this bad-boy. + MPlug splinePlug = fnNode.findPlug( sSpline ); + MExt::ResolveConnections( &sources, &targets, splinePlug, true, false ); + assert( sources.length() == 1 ); + + MPointArray points = GetCoinPoints( sources[0].node(), thisMObject(), false ); + unsigned int i; + for ( i = 0; i < points.length(); ++i ) + { + GLExt::drawO( 1.0 * WBConstants::Scale, points[i].x, points[i].y + 0.25, points[i].z, 3.0f ); + } + } + } +} + +//============================================================================= +// SplineLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus SplineLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + sSpline = msgAttr.create( SPLINE_NAME_LONG, SPLINE_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sSpline ) ); + + sCamera = msgAttr.create( CAMERA_NAME_LONG, CAMERA_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sCamera ) ); + + MFnNumericAttribute numAttr; + sIsCoin = numAttr.create( IS_COIN_LONG, IS_COIN_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sIsCoin ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// SplineLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void SplineLocatorNode::postConstructor() +{ + setExistWithoutInConnections( false ); + setExistWithoutOutConnections( false ); +} + +//============================================================================= +// SplineLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& splineLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* SplineLocatorNode::Export( MObject& splineLocatorNode ) +{ + MFnDagNode fnNode( splineLocatorNode ); + + if ( fnNode.typeId() == SplineLocatorNode::id ) + { + bool isCoinSpline = false; + fnNode.findPlug( sIsCoin ).getValue( isCoinSpline ); + if ( isCoinSpline ) + { + //Export a coin spline. + MPlugArray sources, targets; + //Get the spline associated with this bad-boy. + MPlug splinePlug = fnNode.findPlug( sSpline ); + MExt::ResolveConnections( &sources, &targets, splinePlug, true, false ); + assert( sources.length() == 1 ); + + MPointArray points = GetCoinPoints( sources[0].node(), splineLocatorNode, true ); + + tlWBLocatorChunk* locator = NULL; + + unsigned int coinCount = 0; + + if ( points.length() > 0 ) + { + locator = new tlWBLocatorChunk; + + locator->SetType( LocatorType::GENERIC ); + + unsigned int i; + for ( i = 0; i < points.length(); ++i ) + { + tlWBLocatorChunk* coinLoc = new tlWBLocatorChunk; + coinLoc->SetType( LocatorType::COIN ); + + tlPoint point; + point.x = points[i].x / WBConstants::Scale; + point.y = points[i].y / WBConstants::Scale; + point.z = -points[i].z / WBConstants::Scale; + + coinLoc->SetPosition( point ); + + char name[256]; + sprintf( name, "%sCoin%d", fnNode.name().asChar(), coinCount ); + coinLoc->SetName( name ); + ++coinCount; + + + locator->AppendSubChunk( coinLoc ); + } + } + + return locator; + + } + else + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::SPLINE ); + + //The data here is the event associated with this locator. + locator->SetNumDataElements( 0 ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, splineLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + MPlugArray sources, targets; + //Get the spline associated with this bad-boy. + MPlug splinePlug = fnNode.findPlug( sSpline ); + MExt::ResolveConnections( &sources, &targets, splinePlug, true, false ); + assert( sources.length() == 1 ); + + tlDataChunk* splineChunk = WBSpline::Export( sources[ 0 ].node() ); + assert( splineChunk ); + + if ( splineChunk ) + { + //Get the camera and append it here. + MPlug railCamPlug = fnNode.findPlug( sCamera ); + MExt::ResolveConnections( &sources, &targets, railCamPlug, true, false ); + assert( targets.length() == 1 ); + + tlDataChunk* railCamChunk = RailCamLocatorNode::Export( sources[0].node() ); + assert( railCamChunk ); + splineChunk->AppendSubChunk( railCamChunk ); + + locator->AppendSubChunk( splineChunk ); + } + else + { + MExt::DisplayError( "No spline attached to: %s!", fnNode.name().asChar() ); + } + + //Make the trigger volumes a sub-chunk of the locator... + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + return locator; + } + + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/splinelocatornode.h b/tools/worldbuilder/code/nodes/splinelocatornode.h new file mode 100644 index 0000000..4473d05 --- /dev/null +++ b/tools/worldbuilder/code/nodes/splinelocatornode.h @@ -0,0 +1,101 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: scriptlocatornode.h +// +// Description: Blahblahblah +// +// History: 16/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef SPLINELOCATORNODE_H +#define SPLINELOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class SplineLocatorNode : public MPxLocatorNode +{ +public: + SplineLocatorNode(); + virtual ~SplineLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* SPLINE_NAME_SHORT; + static const char* SPLINE_NAME_LONG; + static MObject sSpline; + + static const char* CAMERA_NAME_SHORT; + static const char* CAMERA_NAME_LONG; + static MObject sCamera; + + static const char* IS_COIN_SHORT; + static const char* IS_COIN_LONG; + static MObject sIsCoin; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + //Prevent wasteful constructor creation. + SplineLocatorNode( const SplineLocatorNode& eventlocatornode ); + SplineLocatorNode& operator=( const SplineLocatorNode& eventlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// SplineLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +inline void* SplineLocatorNode::creator() +{ + return new SplineLocatorNode(); +} + +#endif //SPLINELOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/staticcameralocatornode.cpp b/tools/worldbuilder/code/nodes/staticcameralocatornode.cpp new file mode 100644 index 0000000..c922d0f --- /dev/null +++ b/tools/worldbuilder/code/nodes/staticcameralocatornode.cpp @@ -0,0 +1,573 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: StaticCameraLocatorNode.cpp +// +// Description: Implement StaticCameraLocatorNode +// +// History: 9/17/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +// Foundation Tech +#include "main/toolhack.h" +#include <raddebug.hpp> +#include <p3d/pointcamera.hpp> + +//======================================== +// Project Includes +//======================================== +#include "StaticCameraLocatorNode.h" + +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" +#include "utility/transformmatrix.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatortypes.h" +#include "../../../game/code/camera/staticcam.h" + +#include "nodes/triggervolumenode.h" + +#include "gameengine/gameengine.h" +#include "gameengine/wbcamtarget.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId StaticCameraLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::StaticCameraLocator ); +const char* StaticCameraLocatorNode::stringId = "StaticCameraLocatorNode"; + +const int StaticCameraLocatorNode::ACTIVE_COLOUR = 15; +const int StaticCameraLocatorNode::INACTIVE_COLOUR = 12; +const float StaticCameraLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +char StaticCameraLocatorNode::sNewName[MAX_NAME_LEN]; + +const char* StaticCameraLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* StaticCameraLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject StaticCameraLocatorNode::sTriggers; + +const char* StaticCameraLocatorNode::FOV_NAME_SHORT = "fov"; +const char* StaticCameraLocatorNode::FOV_NAME_LONG = "fieldOfView"; +MObject StaticCameraLocatorNode::sFOV; + +const char* StaticCameraLocatorNode::TARGET_NAME_SHORT = "trg"; +const char* StaticCameraLocatorNode::TARGET_NAME_LONG = "target"; +MObject StaticCameraLocatorNode::sTarget; + +const char* StaticCameraLocatorNode::FACING_OFFSET_NAME_SHORT = "facoff"; +const char* StaticCameraLocatorNode::FACING_OFFSET_NAME_LONG = "facingOffset"; +MObject StaticCameraLocatorNode::sFacingOffset; + +const char* StaticCameraLocatorNode::TRACKING_NAME_SHORT = "trkng"; +const char* StaticCameraLocatorNode::TRACKING_NAME_LONG = "tracking"; +MObject StaticCameraLocatorNode::sTracking; + +const char* StaticCameraLocatorNode::TARGET_LAG_NAME_SHORT = "trglg"; +const char* StaticCameraLocatorNode::TARGET_LAG_NAME_LONG = "targetLag"; +MObject StaticCameraLocatorNode::sTargetLag; + +const char* StaticCameraLocatorNode::ACTIVE_NAME_SHORT = "act"; +const char* StaticCameraLocatorNode::ACTIVE_NAME_LONG = "active"; +MObject StaticCameraLocatorNode::sActive; + +const char* StaticCameraLocatorNode::TRANSITION_TO_RATE_NAME_LONG = "transitionTo"; +const char* StaticCameraLocatorNode::TRANSITION_TO_RATE_NAME_SHORT = "trnto"; +MObject StaticCameraLocatorNode::sTransitionToRate; + +const char* StaticCameraLocatorNode::ONESHOT_NAME_LONG = "oneShot"; +const char* StaticCameraLocatorNode::ONESHOT_NAME_SHORT = "oShot"; +MObject StaticCameraLocatorNode::sOneShot; + +const char* StaticCameraLocatorNode::NOFOV_NAME_LONG = "noFOV"; +const char* StaticCameraLocatorNode::NOFOV_NAME_SHORT = "nf"; +MObject StaticCameraLocatorNode::sNoFOV; + +const char* StaticCameraLocatorNode::CUTALL_NAME_LONG = "cutInOut"; +const char* StaticCameraLocatorNode::CUTALL_NAME_SHORT = "cin"; +MObject StaticCameraLocatorNode::sCutAll; + +const char* StaticCameraLocatorNode::CAR_ONLY_NAME_LONG = "carOnly"; +const char* StaticCameraLocatorNode::CAR_ONLY_NAME_SHORT = "co"; +MObject StaticCameraLocatorNode::sCarOnly; + +const char* StaticCameraLocatorNode::ON_FOOT_ONLY_NAME_LONG = "onFootOnly"; +const char* StaticCameraLocatorNode::ON_FOOT_ONLY_NAME_SHORT = "ofo"; +MObject StaticCameraLocatorNode::sOnFootOnly; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK StaticCameraLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[StaticCameraLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, StaticCameraLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Static Camera Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + StaticCameraLocatorNode::SetNewName( newName.asChar() ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + StaticCameraLocatorNode::SetNewName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// BreakableCameraLocatorNode::StaticCameraLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +StaticCameraLocatorNode::StaticCameraLocatorNode() +{ + mStaticCam = new StaticCam(); + mStaticCam->AddRef(); + mStaticCam->SetPlayerID( 0 ); + + mStaticCam->SetCamera( new tPointCamera() ); + + mCamTarget = new WBCamTarget(); +} + +//============================================================================== +// StaticCameraLocatorNode::~StaticCameraLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +StaticCameraLocatorNode::~StaticCameraLocatorNode() +{ + mStaticCam->Release(); + mStaticCam = NULL; + + if ( mCamTarget ) + { + delete mCamTarget; + } +} + +//============================================================================= +// StaticCameraLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* StaticCameraLocatorNode::creator() +{ + return new StaticCameraLocatorNode(); +} + +//============================================================================= +// StaticCameraLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void StaticCameraLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::DIRECTIONAL_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + GameEngine::GetInstance()->UpdateStaticCam( thisMObject() ); + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0f ); + GLExt::drawCamera3D( SCALE, 0,0,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// StaticCameraLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus StaticCameraLocatorNode::initialize() +{ + MStatus status; + MFnMessageAttribute msgAttr; + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnNumericAttribute numericAttr; + sFOV = numericAttr.create( FOV_NAME_LONG, FOV_NAME_SHORT, MFnNumericData::kFloat, 90.0f, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.1f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(180.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFOV ) ); + + MFnTypedAttribute typedAttr; + sTarget = typedAttr.create( TARGET_NAME_LONG, TARGET_NAME_SHORT, MFnData::kString, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typedAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typedAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTarget ) ); + + sFacingOffset = numericAttr.create( FACING_OFFSET_NAME_LONG, FACING_OFFSET_NAME_SHORT, MFnNumericData::k3Float, 0.0f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sFacingOffset ) ); + + sTracking = numericAttr.create( TRACKING_NAME_LONG, TRACKING_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTracking ) ); + + sTargetLag = numericAttr.create( TARGET_LAG_NAME_LONG, TARGET_LAG_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTargetLag ) ); + + sActive = numericAttr.create( ACTIVE_NAME_LONG, ACTIVE_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sActive ) ); + + sTransitionToRate = numericAttr.create( TRANSITION_TO_RATE_NAME_LONG, TRANSITION_TO_RATE_NAME_SHORT, MFnNumericData::kFloat, 0.04f, &status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMin(0.0f) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setMax(1.0f) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sTransitionToRate ) ); + + sOneShot = numericAttr.create( ONESHOT_NAME_LONG, ONESHOT_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sOneShot ) ); + + sNoFOV = numericAttr.create( NOFOV_NAME_LONG, NOFOV_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sNoFOV ) ); + + sCutAll = numericAttr.create( CUTALL_NAME_LONG, CUTALL_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sCutAll ) ); + + sCarOnly = numericAttr.create( CAR_ONLY_NAME_LONG, CAR_ONLY_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sCarOnly ) ); + + sOnFootOnly = numericAttr.create( ON_FOOT_ONLY_NAME_LONG, ON_FOOT_ONLY_NAME_SHORT, MFnNumericData::kBoolean, false, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( numericAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( numericAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( addAttribute( sOnFootOnly ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// StaticCameraLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void StaticCameraLocatorNode::postConstructor() +{ +} + +//============================================================================= +// StaticCameraLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& staticCameraLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* StaticCameraLocatorNode::Export( MObject& staticCameraLocatorNode ) +{ + MFnDagNode fnNode( staticCameraLocatorNode ); + + if ( fnNode.typeId() == StaticCameraLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::STATIC_CAMERA ); + + //Set the position + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, staticCameraLocatorNode ); + + //Set the values. + tlPoint position; + + position[0] = thisPosition[0] / WBConstants::Scale; + position[1] = thisPosition[1] / WBConstants::Scale; + position[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( position ); + + //Also get the direction. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + unsigned int length = (1 * 3) + 2 + 1 + 1 + 1 + 1 + 1; //1 vector + 2 floats + 1 bool + transition rate (offset + fov & lag + tracking + trate) + one shot + CUT_ALL + CarOnly/OnFootOnly + + unsigned long* data; + + data = new unsigned long[ length ]; + + rmt::Vector offset; + + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; + + fnNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(0).getValue( x ); + fnNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(1).getValue( y ); + fnNode.findPlug( StaticCameraLocatorNode::sFacingOffset ).child(2).getValue( z ); + + bool tracking = false; + fnNode.findPlug( StaticCameraLocatorNode::sTracking ).getValue( tracking ); + + if ( tracking ) + { + offset = rmt::Vector( x, y, z ); + } + else + { + //Figure out the transformation on the locator node and apply it to the offset. + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0]; + hmatrix.element[3][1]; + hmatrix.element[3][2]; + + tlPoint point( 0.0f, 0.0f, 10.0f ); + point = VectorTransform( hmatrix, point ); + + offset = position; + offset.Add( point ); + } + + //Copy the offset to the locator + memcpy( &data[0], &offset.x, 3 * sizeof(float) ); + + float fov = 90.0f; + fnNode.findPlug( sFOV ).getValue( fov ); + memcpy( &data[3], &fov, sizeof(float) ); + + float lag = 0.04f; + fnNode.findPlug( sTargetLag ).getValue( lag ); + memcpy( &data[4], &lag, sizeof(float) ); + + //Also tracking + if ( tracking ) + { + data[5] = 1; + } + else + { + data[5] = 0; + } + + float tRate = 0.04f; + fnNode.findPlug( sTransitionToRate ).getValue( tRate ); + memcpy( &data[6], &tRate, sizeof(float) ); + + bool oneShot = false; + fnNode.findPlug( sOneShot ).getValue( oneShot ); + if ( oneShot ) + { + data[7] = 1; + } + else + { + data[7] = 0; + } + + bool noFOV = false; + fnNode.findPlug( sNoFOV ).getValue( noFOV ); + data[7] |= ( (noFOV ? 1 : 0 ) << 1 ); + + bool cutInOut = false; + fnNode.findPlug( sCutAll ).getValue( cutInOut ); + data[8] = ( (cutInOut ? 1 : 0 ) ); + + bool carOnly = false; + fnNode.findPlug( sCarOnly ).getValue( carOnly ); + data[9] = ( (carOnly ? 1 : 0 ) ); + + bool onFootOnly = false; + fnNode.findPlug( sOnFootOnly ).getValue( onFootOnly ); + data[9] |= ( (onFootOnly ? 1 << 1 : 0 ) ); + + if( carOnly && onFootOnly ) + { + MExt::DisplayError( "Static Camera: %s has onFootOnly and carOnly flags set!\n", fnNode.name().asChar() ); + } + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + return locator; + } + + return NULL; +} +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/staticcameralocatornode.h b/tools/worldbuilder/code/nodes/staticcameralocatornode.h new file mode 100644 index 0000000..88f0a64 --- /dev/null +++ b/tools/worldbuilder/code/nodes/staticcameralocatornode.h @@ -0,0 +1,198 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: staticcameralocatornode.h +// +// Description: Blahblahblah +// +// History: 9/17/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef STATICCAMERALOCATORNODE_H +#define STATICCAMERALOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; +class StaticCam; +class WBCamTarget; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK StaticCameraLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class StaticCameraLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + StaticCameraLocatorNode(); + virtual ~StaticCameraLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& staticCameraLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* FOV_NAME_SHORT; + static const char* FOV_NAME_LONG; + static MObject sFOV; + + static const char* TARGET_NAME_SHORT; + static const char* TARGET_NAME_LONG; + static MObject sTarget; + + static const char* FACING_OFFSET_NAME_SHORT; + static const char* FACING_OFFSET_NAME_LONG; + static MObject sFacingOffset; + + static const char* TRACKING_NAME_SHORT; + static const char* TRACKING_NAME_LONG; + static MObject sTracking; + + static const char* TARGET_LAG_NAME_SHORT; + static const char* TARGET_LAG_NAME_LONG; + static MObject sTargetLag; + + static const char* ACTIVE_NAME_SHORT; + static const char* ACTIVE_NAME_LONG; + static MObject sActive; + + static const char* TRANSITION_TO_RATE_NAME_LONG; + static const char* TRANSITION_TO_RATE_NAME_SHORT; + static MObject sTransitionToRate; + + static const char* ONESHOT_NAME_LONG; + static const char* ONESHOT_NAME_SHORT; + static MObject sOneShot; + + static const char* NOFOV_NAME_LONG; + static const char* NOFOV_NAME_SHORT; + static MObject sNoFOV; + + static const char* CUTALL_NAME_LONG; + static const char* CUTALL_NAME_SHORT; + static MObject sCutAll; + + static const char* CAR_ONLY_NAME_LONG; + static const char* CAR_ONLY_NAME_SHORT; + static MObject sCarOnly; + + static const char* ON_FOOT_ONLY_NAME_LONG; + static const char* ON_FOOT_ONLY_NAME_SHORT; + static MObject sOnFootOnly; + + //MPxNode stuff... + StaticCam* GetStaticCam(); + WBCamTarget* GetTarget(); + +private: + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + + StaticCam* mStaticCam; + WBCamTarget* mCamTarget; + + //Prevent wasteful constructor creation. + StaticCameraLocatorNode( const StaticCameraLocatorNode& staticcameralocatornode ); + StaticCameraLocatorNode& operator=( const StaticCameraLocatorNode& staticcameralocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// StaticCameraLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void StaticCameraLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// StaticCameraLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const StaticCameraLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// StaticCameraLocatorNode::GetStaticCam +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: StaticCam +// +//============================================================================= +inline StaticCam* StaticCameraLocatorNode::GetStaticCam() +{ + return mStaticCam; +} + +//============================================================================= +// StaticCameraLocatorNode::GetTarget +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: WBCamTarget +// +//============================================================================= +inline WBCamTarget* StaticCameraLocatorNode::GetTarget() +{ + return mCamTarget; +} + +#endif //STATICCAMERALOCATORNODE_H diff --git a/tools/worldbuilder/code/nodes/triggertypes.h b/tools/worldbuilder/code/nodes/triggertypes.h new file mode 100644 index 0000000..4393649 --- /dev/null +++ b/tools/worldbuilder/code/nodes/triggertypes.h @@ -0,0 +1,10 @@ +#ifndef TRIGGER_TYPES +#define TRIGGER_TYPES + + enum TriggerType + { + SPHERE, + RECTANGLE + }; + +#endif
\ No newline at end of file diff --git a/tools/worldbuilder/code/nodes/triggervolumenode.cpp b/tools/worldbuilder/code/nodes/triggervolumenode.cpp new file mode 100644 index 0000000..6aa31dd --- /dev/null +++ b/tools/worldbuilder/code/nodes/triggervolumenode.cpp @@ -0,0 +1,435 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: TriggerVolumeNode.cpp +// +// Description: Implement TriggerVolumeNode +// +// History: 23/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include <windows.h> +#include <GL/glu.h> +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/TriggerVolumeNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "utility/transformmatrix.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId TriggerVolumeNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::TriggerVolume ); +const char* TriggerVolumeNode::stringId = "TriggerVolumeNode"; + +const int TriggerVolumeNode::ACTIVE_COLOUR = 15; +const int TriggerVolumeNode::INACTIVE_COLOUR = 22; +const float TriggerVolumeNode::SCALE = 1.0f * WBConstants::Scale; +const float TriggerVolumeNode::LINE_WIDTH = 5.0f; + +const char* TriggerVolumeNode::LOCATOR_NAME_SHORT = "l"; +const char* TriggerVolumeNode::LOCATOR_NAME_LONG = "locator"; +MObject TriggerVolumeNode::sLocator; + +const char* TriggerVolumeNode::TYPE_NAME_SHORT = "typ"; +const char* TriggerVolumeNode::TYPE_NAME_LONG = "type"; +MObject TriggerVolumeNode::sType; + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// TriggerVolumeNode::TriggerVolumeNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +TriggerVolumeNode::TriggerVolumeNode() : + mType( SPHERE ) +{ +} + +//============================================================================== +// TriggerVolumeNode::~TriggerVolumeNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +TriggerVolumeNode::~TriggerVolumeNode() +{ +} + +//============================================================================= +// TriggerVolumeNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* TriggerVolumeNode::creator() +{ + return new TriggerVolumeNode(); +} + +//============================================================================= +// TriggerVolumeNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void TriggerVolumeNode::draw( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::TRIGGER_VOLUMES ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + // view.setDrawColor( INACTIVE_COLOUR, M3dView::kDormantColors ); + // GLExt::drawLine( localOrigin, localPosNN ); + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + + //Determine the type of trigger volume. + MFnDagNode fnDag( thisMObject() ); + + MStatus status; + MPlug typePlug = fnDag.findPlug( sType, &status ); + assert( status ); + + int type; + typePlug.getValue( type ); + + //Test to see if there was a change. + if( (Type)type != mType ) + { + //Hmm, changing trigger volume types... + + if ( (Type)type == SPHERE ) + { + //Becoming a sphere. + MObject transform; + + transform = fnDag.parent( 0 ); + assert( !transform.isNull() ); + + MFnDagNode fnTransDag( transform ); + + //Test the scaling factors. If one is larger than + //another, set them all to the same value. + MPlug scaleX, scaleY, scaleZ; + double x, y, z; + + scaleX = fnTransDag.findPlug( MString("sx"), &status ); + assert( status ); + scaleX.getValue( x ); + assert( status ); + + scaleY = fnTransDag.findPlug( MString("sy"), &status ); + assert( status ); + scaleY.getValue( y ); + assert( status ); + + scaleZ = fnTransDag.findPlug( MString("sz"), &status ); + assert( status ); + scaleZ.getValue( z ); + assert( status ); + + //which is larger? + double largest = 0; + if ( x > largest ) + { + largest = x; + } + if ( y > largest ) + { + largest = y; + } + if ( z > largest ) + { + largest = z; + } + + x = largest; + y = largest; + z = largest; + + scaleX.setValue( x ); + scaleY.setValue( y ); + scaleZ.setValue( z ); + + mType = SPHERE; + } + else if ( (Type)type == RECTANGLE ) + { + //Becoming a rectangle. + + mType = RECTANGLE; + } + else + { + //Don't know what this is! + assert( false ); + } + } + else + { + if ( mType == SPHERE ) + { + MObject transform; + + transform = fnDag.parent( 0 ); + assert( !transform.isNull() ); + + MFnDagNode fnTransDag( transform ); + + //Test the scaling factors. If one is larger than + //another, set them all to the same value. + MPlug scaleX, scaleY, scaleZ; + double x; + + scaleX = fnTransDag.findPlug( MString("sx"), &status ); + assert( status ); + scaleX.getValue( x ); + assert( status ); + + scaleY = fnTransDag.findPlug( MString("sy"), &status ); + assert( status ); + + scaleZ = fnTransDag.findPlug( MString("sz"), &status ); + assert( status ); + + scaleY.setValue( x ); + scaleZ.setValue( x ); + + GLExt::drawSphere( SCALE, 0,0,0, 5.0 ); + + } + else if ( mType == RECTANGLE ) + { + MPoint p1( SCALE, SCALE, -SCALE ); + MPoint p2( -SCALE, -SCALE, SCALE ); + + GLExt::drawBox( p1, p2, 5.0 ); + } + else + { + assert( false ); + } + } + + glPopAttrib(); + view.endGL(); + } +} + + +//============================================================================= +// TriggerVolumeNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus TriggerVolumeNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sLocator = msgAttr.create( LOCATOR_NAME_LONG, LOCATOR_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sLocator ) ); + + MFnEnumAttribute enumAttr; + //Default to a SPHERE! + sType = enumAttr.create( TYPE_NAME_LONG, TYPE_NAME_SHORT, 0, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( enumAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( "sphere" ), SPHERE ) ); + RETURN_STATUS_ON_FAILURE( enumAttr.addField( MString( "rectangle" ), RECTANGLE ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sType ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// TriggerVolumeNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void TriggerVolumeNode::postConstructor() +{ + //When my locator goes away, so do I. + setExistWithoutOutConnections( false ); +} + +//============================================================================= +// TriggerVolumeNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& triggerVolumeNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* TriggerVolumeNode::Export( MObject& triggerVolumeNode ) +{ + MFnDagNode fnNode( triggerVolumeNode ); + + if ( fnNode.typeId() == TriggerVolumeNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBTriggerVolumeChunk* trigger = new tlWBTriggerVolumeChunk; + + trigger->SetName( fnNode.name().asChar() ); + + int type; + fnNode.findPlug( sType ).getValue( type ); + trigger->SetType( type ); + + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( hmatrix ); + //Make this p3d friendly... + hmatrix.element[3][0] /= WBConstants::Scale; + hmatrix.element[3][1] /= WBConstants::Scale; + hmatrix.element[3][2] /= WBConstants::Scale; + + //This is the translation / rotation matrix + trigger->SetMatrix( hmatrix ); + + //This is the scale. + double scaleX, scaleY, scaleZ; + fnTransform.findPlug( MString( "sx" ) ).getValue( scaleX ); + fnTransform.findPlug( MString( "sy" ) ).getValue( scaleY ); + fnTransform.findPlug( MString( "sz" ) ).getValue( scaleZ ); + + trigger->SetScale( tlPoint( scaleX, scaleY, scaleZ ) ); + return trigger; + } + + return NULL; +} + +//============================================================================= +// TriggerVolumeNode::GetScaleAndMatrix +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& triggerVolumeNode, tlMatrix& mat, tlPoint& point) +// +// Return: void +// +//============================================================================= +void TriggerVolumeNode::GetScaleAndMatrix( MObject& triggerVolumeNode, tlMatrix& mat, tlPoint& point) +{ + MFnDagNode fnNode( triggerVolumeNode ); + + if ( fnNode.typeId() == TriggerVolumeNode::id ) + { + int type; + fnNode.findPlug( sType ).getValue( type ); + + MObject transform; + transform = fnNode.parent( 0 ); + MFnTransform fnTransform( transform ); + + MDagPath dagPath; + MExt::FindDagNodeByName( &dagPath, fnTransform.name() ); + TransformMatrix tm( dagPath ); + + tlMatrix hmatrix; + tm.GetHierarchyMatrixLHS( mat ); + //Make this p3d friendly... + mat.element[3][0] /= WBConstants::Scale; + mat.element[3][1] /= WBConstants::Scale; + mat.element[3][2] /= WBConstants::Scale; + + //This is the scale. + double scaleX, scaleY, scaleZ; + fnTransform.findPlug( MString( "sx" ) ).getValue( scaleX ); + fnTransform.findPlug( MString( "sy" ) ).getValue( scaleY ); + fnTransform.findPlug( MString( "sz" ) ).getValue( scaleZ ); + + point = tlPoint( scaleX, scaleY, scaleZ ); + } +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/triggervolumenode.h b/tools/worldbuilder/code/nodes/triggervolumenode.h new file mode 100644 index 0000000..b083af2 --- /dev/null +++ b/tools/worldbuilder/code/nodes/triggervolumenode.h @@ -0,0 +1,86 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: triggervolumenode.h +// +// Description: Blahblahblah +// +// History: 23/05/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef TRIGGERVOLUMENODE_H +#define TRIGGERVOLUMENODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class TriggerVolumeNode : public MPxLocatorNode +{ +public: + + enum Type + { + SPHERE, + RECTANGLE + }; + + TriggerVolumeNode(); + virtual ~TriggerVolumeNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& triggerVolumeNode ); + static void GetScaleAndMatrix( MObject& triggerVolumeNode, tlMatrix& mat, tlPoint& point); + + static MTypeId id; + static const char* stringId; + + static const char* LOCATOR_NAME_SHORT; + static const char* LOCATOR_NAME_LONG; + static MObject sLocator; + + static const char* TYPE_NAME_SHORT; + static const char* TYPE_NAME_LONG; + static MObject sType; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + static const float LINE_WIDTH; + + Type mType; + + //Prevent wasteful constructor creation. + TriggerVolumeNode( const TriggerVolumeNode& triggervolumenode ); + TriggerVolumeNode& operator=( const TriggerVolumeNode& triggervolumenode ); +}; + + +#endif //TRIGGERVOLUMENODE_H diff --git a/tools/worldbuilder/code/nodes/wbspline.cpp b/tools/worldbuilder/code/nodes/wbspline.cpp new file mode 100644 index 0000000..d0673f7 --- /dev/null +++ b/tools/worldbuilder/code/nodes/wbspline.cpp @@ -0,0 +1,109 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: WBSpline.cpp +// +// Description: Implement WBSpline +// +// History: 05/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/WBSpline.h" +#include "nodes/triggervolumenode.h" +#include "main/constants.h" + + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +char WBSpline::sName[MAX_NAME_LEN]; + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +void WBSpline::SetName( const char* name ) +{ + strncpy( sName, name, MAX_NAME_LEN ); +} + +const char* const WBSpline::GetName() +{ + return sName; +} + +//============================================================================= +// WBSpline::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& obj ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* WBSpline::Export( MObject& obj ) +{ + MStatus status; + + MFnDagNode fnDagNode( obj ); + MDagPath dagPath; + fnDagNode.getPath( dagPath ); + + MFnNurbsCurve fnNurbs( dagPath, &status ); + assert( status ); + + if ( status ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBSplineChunk* spline = new tlWBSplineChunk; + + spline->SetName( fnNurbs.name().asChar() ); + + int numCVs = fnNurbs.numCVs( &status ); + assert( status ); + + MPointArray cvs; + fnNurbs.getCVs( cvs, MSpace::kWorld ); + + tlPoint* tlCVs = new tlPoint[numCVs]; + + int i; + for ( i = 0; i < numCVs; ++i ) + { + tlCVs[i].x = cvs[i].x / WBConstants::Scale; + tlCVs[i].y = cvs[i].y / WBConstants::Scale; + tlCVs[i].z = -cvs[i].z / WBConstants::Scale; + } + + spline->SetCVs( tlCVs, numCVs ); + spline->SetNumCVs( numCVs ); + + delete[] tlCVs; + + return spline; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/wbspline.h b/tools/worldbuilder/code/nodes/wbspline.h new file mode 100644 index 0000000..87caf6d --- /dev/null +++ b/tools/worldbuilder/code/nodes/wbspline.h @@ -0,0 +1,54 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: wbspline.h +// +// Description: Blahblahblah +// +// History: 05/06/2002 + Created -- NAME +// +//============================================================================= + +#ifndef WBSPLINE_H +#define WBSPLINE_H + +//======================================== +// Nested Includes +//======================================== +#include "main/toolhack.h" + +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= + +class WBSpline +{ +public: + static tlDataChunk* Export( MObject& obj ); + + enum { MAX_NAME_LEN = 256 }; + + static void SetName( const char* name ); + static const char* const GetName(); + static char sName[MAX_NAME_LEN]; + +private: + WBSpline(); + virtual ~WBSpline(); + + //Prevent wasteful constructor creation. + WBSpline( const WBSpline& wbspline ); + WBSpline& operator=( const WBSpline& wbspline ); +}; + + +#endif //WBSPLINE_H diff --git a/tools/worldbuilder/code/nodes/zoneeventlocatornode.cpp b/tools/worldbuilder/code/nodes/zoneeventlocatornode.cpp new file mode 100644 index 0000000..60d84d8 --- /dev/null +++ b/tools/worldbuilder/code/nodes/zoneeventlocatornode.cpp @@ -0,0 +1,377 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: ZoneEventLocatorNode.cpp +// +// Description: Implement ZoneEventLocatorNode +// +// History: 18/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +//======================================== +// System Includes +//======================================== +#include "main/toolhack.h" +#include <toollib.hpp> + +//======================================== +// Project Includes +//======================================== +#include "nodes/ZoneEventLocatorNode.h" +#include "main/constants.h" +#include "main/worldbuilder.h" +#include "utility/glext.h" +#include "utility/mext.h" +#include "utility/nodehelper.h" + +#include "nodes/triggervolumenode.h" + +#include "resources/resource.h" + +#include "../../../game/code/meta/locatorevents.h" +#include "../../../game/code/meta/locatortypes.h" + +//****************************************************************************** +// +// Global Data, Local Data, Local Classes +// +//****************************************************************************** +MTypeId ZoneEventLocatorNode::id( WBConstants::TypeIDPrefix, WBConstants::NodeIDs::ZoneEventLocator ); +const char* ZoneEventLocatorNode::stringId = "ZoneEventLocatorNode"; + +const int ZoneEventLocatorNode::ACTIVE_COLOUR = 15; +const int ZoneEventLocatorNode::INACTIVE_COLOUR = 12; +const float ZoneEventLocatorNode::SCALE = 1.0f * WBConstants::Scale; + +const char* ZoneEventLocatorNode::TRIGGERS_NAME_SHORT = "trigs"; +const char* ZoneEventLocatorNode::TRIGGERS_NAME_LONG = "triggers"; +MObject ZoneEventLocatorNode::sTriggers; + +const char* ZoneEventLocatorNode::ZONE_NAME_SHORT = "z"; +const char* ZoneEventLocatorNode::ZONE_NAME_LONG = "zone"; +MObject ZoneEventLocatorNode::sZone; + +char ZoneEventLocatorNode::sNewName[MAX_NAME_LEN]; +char ZoneEventLocatorNode::sZoneName[MAX_NAME_LEN]; + +//****************************************************************************** +// +// Callbacks +// +//****************************************************************************** + +BOOL CALLBACK ZoneEventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ) +{ + switch (uMsg) + { + case WM_INITDIALOG: + { + SetDlgItemText( hWnd, IDC_EDIT2, WorldBuilder::GetPrefix() ); + SetDlgItemText( hWnd, IDC_EDIT3, "" ); + return true; + } + break; + case WM_COMMAND: + { + if ( LOWORD(wParam) == IDC_BUTTON1 || LOWORD(wParam) == IDOK ) + { + //Get the entry in the text field. + char name[ZoneEventLocatorNode::MAX_NAME_LEN]; + GetDlgItemText( hWnd, IDC_EDIT1, name, ZoneEventLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a new name for the Zone Event Locator!"); + return false; + } + + MString newName( WorldBuilder::GetPrefix() ); + newName += MString( name ); + + ZoneEventLocatorNode::SetNewName( newName.asChar() ); + + //Do the zone name too... + GetDlgItemText( hWnd, IDC_EDIT3, name, ZoneEventLocatorNode::MAX_NAME_LEN ); + + if ( strcmp(name, "") == 0 ) + { + MExt::DisplayWarning("You must input a file name for the zone!"); + return false; + } + + ZoneEventLocatorNode::SetZoneName( name ); + + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + else if( LOWORD(wParam) == IDCANCEL ) + { + ZoneEventLocatorNode::SetNewName( "" ); + ZoneEventLocatorNode::SetZoneName( "" ); + EndDialog( hWnd, 0 ); //this is how you close the window. + return true; + } + + return false; + } + break; + default: + { + return false; + } + break; + } +} + + +//****************************************************************************** +// +// Public Member Functions +// +//****************************************************************************** + +//============================================================================== +// ZoneEventLocatorNode::ZoneEventLocatorNode +//============================================================================== +// Description: Constructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ZoneEventLocatorNode::ZoneEventLocatorNode() +{ +} + +//============================================================================== +// ZoneEventLocatorNode::~ZoneEventLocatorNode +//============================================================================== +// Description: Destructor. +// +// Parameters: None. +// +// Return: N/A. +// +//============================================================================== +ZoneEventLocatorNode::~ZoneEventLocatorNode() +{ +} + +//============================================================================= +// ZoneEventLocatorNode::creator +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void* ZoneEventLocatorNode::creator() +{ + return new ZoneEventLocatorNode(); +} + +//============================================================================= +// ZoneEventLocatorNode::draw +//============================================================================= +// Description: Comment +// +// Parameters: ( M3dView& view, const MDagPath& path, M3dView::DisplayStyle displayStyle, M3dView::DisplayStatus displayStatus ) +// +// Return: void +// +//============================================================================= +void ZoneEventLocatorNode::draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus ) +{ + if ( WorldBuilder::GetDisplayLevel() & WorldBuilder::ZONE_EVENT_LOCATORS ) + { + view.beginGL(); + glPushAttrib( GL_CURRENT_BIT | GL_LINE_BIT | GL_POLYGON_BIT ); + + //When we are in render mode, we draw the lines between the nodes. + //If this was in GL_SELECTION_MODE, we would not draw the lines, so they won't interfere + //with selection. + GLint value; + glGetIntegerv( GL_RENDER_MODE, &value ); + + //Draw things here we don't want selectable. + if ( (value == GL_RENDER) ) + { + MPlugArray sources, targets; + MFnDagNode fnNode( thisMObject() ); + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < targets.length(); ++i ) + { + //Draw a box around the source trigger volume. + MPoint triggerWP, thisWP; + MExt::GetWorldPosition( &triggerWP, sources[i].node() ); + + MExt::GetWorldPosition( &thisWP, thisMObject() ); + + MPoint triggerLP; + triggerLP = triggerWP - thisWP; + + view.setDrawColor( 8, M3dView::kActiveColors ); + + GLExt::drawLine( MPoint(0,0,0), triggerLP, 5.0f ); + } + } + + if ( displayStatus == M3dView::kDormant ) + { + int colour = NodeHelper::OverrideNodeColour( thisMObject(), INACTIVE_COLOUR ); + + view.setDrawColor( colour, M3dView::kDormantColors ); + } + else + { + view.setDrawColor( ACTIVE_COLOUR, M3dView::kActiveColors ); + } + + //Draw a star to represent the locator. + GLExt::drawCrossHair3D( SCALE, 0,0,0, 5.0 ); + GLExt::drawPyramid( SCALE, 0,0,0, 5.0 ); + GLExt::drawLBolt( SCALE, 0,1,0, 5.0 ); + + glPopAttrib(); + view.endGL(); + } +} + +//============================================================================= +// ZoneEventLocatorNode::initialize +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: MStatus +// +//============================================================================= +MStatus ZoneEventLocatorNode::initialize() +{ + MFnMessageAttribute msgAttr; + MStatus status; + + sTriggers = msgAttr.create( TRIGGERS_NAME_LONG, TRIGGERS_NAME_SHORT, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( msgAttr.setReadable( false ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setWritable( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setArray( true ) ); + RETURN_STATUS_ON_FAILURE( msgAttr.setIndexMatters( false ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sTriggers ) ); + + MFnTypedAttribute typAttr; + sZone = typAttr.create( ZONE_NAME_LONG, ZONE_NAME_SHORT, MFnData::kString, MObject::kNullObj, &status ); + RETURN_STATUS_ON_FAILURE( status ); + RETURN_STATUS_ON_FAILURE( typAttr.setReadable( true ) ); + RETURN_STATUS_ON_FAILURE( typAttr.setWritable( true ) ); + + RETURN_STATUS_ON_FAILURE( addAttribute( sZone ) ); + + return MStatus::kSuccess; +} + +//============================================================================= +// ZoneEventLocatorNode::postConstructor +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: void +// +//============================================================================= +void ZoneEventLocatorNode::postConstructor() +{ +} + +//============================================================================= +// ZoneEventLocatorNode::Export +//============================================================================= +// Description: Comment +// +// Parameters: ( MObject& eventLocatorNode ) +// +// Return: tlDataChunk +// +//============================================================================= +tlDataChunk* ZoneEventLocatorNode::Export( MObject& zoneEventLocatorNode ) +{ + MFnDagNode fnNode( zoneEventLocatorNode ); + + if ( fnNode.typeId() == ZoneEventLocatorNode::id ) + { + //Create a tlDataChunk and return it filled with the appropriate data. + tlWBLocatorChunk* locator = new tlWBLocatorChunk; + + locator->SetName( fnNode.name().asChar() ); + + locator->SetType( LocatorType::DYNAMIC_ZONE ); + + //The data here is the zone associated with this locator. + MString zone; + fnNode.findPlug( sZone ).getValue( zone ); + + unsigned int length = zone.length() / 4 + 1; + + unsigned long* data; + + data = new unsigned long[ length ]; + + memcpy( data, zone.asChar(), zone.length() ); + ((char*)(data))[zone.length()] = '\0'; + + locator->SetDataElements( data, length ); + locator->SetNumDataElements( length ); + + MPoint thisPosition; + MExt::GetWorldPosition( &thisPosition, zoneEventLocatorNode ); + + //Set the values. + tlPoint point; + + point[0] = thisPosition[0] / WBConstants::Scale; + point[1] = thisPosition[1] / WBConstants::Scale; + point[2] = -thisPosition[2] / WBConstants::Scale; //Maya vs. P3D... + locator->SetPosition( point ); + + //Make the trigger volumes a sub-chunk of the locator... + MPlugArray sources, targets; + MPlug triggersPlug = fnNode.findPlug( sTriggers ); + MExt::ResolveConnections( &sources, &targets, triggersPlug, true, false ); + + unsigned int i; + for ( i = 0; i < sources.length(); ++i ) + { + tlDataChunk* trigger = TriggerVolumeNode::Export( sources[ i ].node() ); + assert( trigger ); + + locator->AppendSubChunk( trigger ); + } + + locator->SetNumTriggers( i ); + + delete data; + + return locator; + } + + return NULL; +} + +//****************************************************************************** +// +// Private Member Functions +// +//****************************************************************************** diff --git a/tools/worldbuilder/code/nodes/zoneeventlocatornode.h b/tools/worldbuilder/code/nodes/zoneeventlocatornode.h new file mode 100644 index 0000000..7f25565 --- /dev/null +++ b/tools/worldbuilder/code/nodes/zoneeventlocatornode.h @@ -0,0 +1,151 @@ +//============================================================================= +// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved. +// +// File: zoneeventlocatornode.h +// +// Description: Blahblahblah +// +// History: 18/06/2002 + Created -- Cary Brisebois +// +//============================================================================= + +#ifndef ZONEEVENTLOCATORNODE_H +#define ZONEEVENTLOCATORNODE_H + +//======================================== +// Nested Includes +//======================================== +#include "precompiled/PCH.h" + +//======================================== +// Forward References +//======================================== +class tlDataChunk; + +//============================================================================= +// +// Synopsis: Blahblahblah +// +//============================================================================= +BOOL CALLBACK ZoneEventLocatorNameCallBack( HWND hWnd, UINT uMsg, UINT wParam, long lParam ); + +class ZoneEventLocatorNode : public MPxLocatorNode +{ +public: + enum { MAX_NAME_LEN = 256 }; + + ZoneEventLocatorNode(); + virtual ~ZoneEventLocatorNode(); + + static void* creator(); + + virtual void draw( M3dView& view, + const MDagPath& path, + M3dView::DisplayStyle displayStyle, + M3dView::DisplayStatus displayStatus + ); + static MStatus initialize(); + virtual void postConstructor(); + + //This is how you export one of these. + static tlDataChunk* Export( MObject& eventLocatorNode ); + + static void SetNewName( const char* name ); + static const char* const GetNewName(); + static void SetZoneName( const char* name ); + static const char* const GetZoneName(); + + static MTypeId id; + static const char* stringId; + + static const char* TRIGGERS_NAME_SHORT; + static const char* TRIGGERS_NAME_LONG; + static MObject sTriggers; + + static const char* ZONE_NAME_SHORT; + static const char* ZONE_NAME_LONG; + static MObject sZone; + +private: + + static const int ACTIVE_COLOUR; + static const int INACTIVE_COLOUR; + static const float SCALE; + + static char sNewName[MAX_NAME_LEN]; + static char sZoneName[MAX_NAME_LEN]; + + //Prevent wasteful constructor creation. + ZoneEventLocatorNode( const ZoneEventLocatorNode& zoneeventlocatornode ); + ZoneEventLocatorNode& operator=( const ZoneEventLocatorNode& zoneeventlocatornode ); +}; + +//****************************************************************************** +// +// Inline Public Functions +// +//****************************************************************************** + +//============================================================================= +// ZoneEventLocatorNode::SetNewName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ZoneEventLocatorNode::SetNewName( const char* name ) +{ + strncpy( sNewName, name, MAX_NAME_LEN); +} + +//============================================================================= +// ZoneEventLocatorNode::GetNewName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ZoneEventLocatorNode::GetNewName() +{ + return sNewName; +} + +//============================================================================= +// ZoneEventLocatorNode::SetZoneName +//============================================================================= +// Description: Comment +// +// Parameters: ( const char* name ) +// +// Return: void +// +//============================================================================= +inline void ZoneEventLocatorNode::SetZoneName( const char* name ) +{ + strncpy( sZoneName, name, MAX_NAME_LEN); +} + +//============================================================================= +// ZoneEventLocatorNode::GetZoneName +//============================================================================= +// Description: Comment +// +// Parameters: () +// +// Return: const char* const +// +//============================================================================= +inline const char* const ZoneEventLocatorNode::GetZoneName() +{ + return sZoneName; +} + + + +#endif //ZONEEVENTLOCATORNODE_H diff --git a/tools/worldbuilder/code/precompiled/PCH.cpp b/tools/worldbuilder/code/precompiled/PCH.cpp new file mode 100644 index 0000000..5f77b4a --- /dev/null +++ b/tools/worldbuilder/code/precompiled/PCH.cpp @@ -0,0 +1 @@ +#include "PCH.h"
\ No newline at end of file diff --git a/tools/worldbuilder/code/precompiled/PCH.h b/tools/worldbuilder/code/precompiled/PCH.h new file mode 100644 index 0000000..e643056 --- /dev/null +++ b/tools/worldbuilder/code/precompiled/PCH.h @@ -0,0 +1,52 @@ +#include <maya/M3dView.h> +#include <maya/MArgList.h> +#include <maya/MCursor.h> +#include <maya/MDagPath.h> +#include <maya/MDGMessage.h> +#include <maya/MDGModifier.h> +#include <maya/MDoubleArray.h> +#include <maya/MEulerRotation.h> +#include <maya/MFnCamera.h> +#include <maya/MFnData.h> +#include <maya/MFnDagNode.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnEnumAttribute.h> +#include <maya/MFnIkJoint.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnMatrixData.h> +#include <maya/MFnMesh.h> +#include <maya/MFnMessageAttribute.h> +#include <maya/MFnNumericAttribute.h> +#include <maya/MFnNurbsCurve.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MFnTransform.h> +#include <maya/MFnTypedAttribute.h> +#include <maya/MGlobal.h> +#include <maya/MIntArray.h> +#include <maya/MItDag.h> +#include <maya/MItMeshVertex.h> +#include <maya/MItSelectionList.h> +#include <maya/MMatrix.h> +#include <maya/MNodeMessage.h> +#include <maya/MObject.h> +#include <maya/MObjectArray.h> +#include <maya/MPlug.h> +#include <maya/MPlugArray.h> +#include <maya/MPoint.h> +#include <maya/MPointArray.h> +#include <maya/MPxCommand.h> +#include <maya/MPxContext.h> +#include <maya/MPxContextCommand.h> +#include <maya/MPxLocatorNode.h> +#include <maya/MQuaternion.h> +#include <maya/MSelectionList.h> +#include <maya/MStatus.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +#include <maya/MTransformationMatrix.h> +#include <maya/MTypeId.h> +#include <maya/MUiMessage.h> +#include <maya/MVector.h> + +#include <assert.h>
\ No newline at end of file diff --git a/tools/worldbuilder/code/resources/icon1.ico b/tools/worldbuilder/code/resources/icon1.ico Binary files differnew file mode 100644 index 0000000..8ba9328 --- /dev/null +++ b/tools/worldbuilder/code/resources/icon1.ico diff --git a/tools/worldbuilder/code/resources/resource.aps b/tools/worldbuilder/code/resources/resource.aps Binary files differnew file mode 100644 index 0000000..12d3e81 --- /dev/null +++ b/tools/worldbuilder/code/resources/resource.aps diff --git a/tools/worldbuilder/code/resources/resource.h b/tools/worldbuilder/code/resources/resource.h new file mode 100644 index 0000000..e6ac7fe --- /dev/null +++ b/tools/worldbuilder/code/resources/resource.h @@ -0,0 +1,28 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by resource.rc +// +#define IDD_DIALOG1 101 +#define IDR_ACCELERATOR1 102 +#define IDD_DIALOG2 103 +#define IDD_DIALOG3 104 +#define IDD_DIALOG4 105 +#define IDD_DIALOG5 106 +#define IDI_ICON1 107 +#define IDC_EDIT1 1000 +#define IDC_BUTTON1 1001 +#define IDC_EDIT3 1002 +#define IDC_EDIT2 1007 +#define IDC_COMBO1 1010 +#define IDC_COMBO2 1012 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 109 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1013 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/tools/worldbuilder/code/resources/resource.rc b/tools/worldbuilder/code/resources/resource.rc new file mode 100644 index 0000000..d256bfb --- /dev/null +++ b/tools/worldbuilder/code/resources/resource.rc @@ -0,0 +1,318 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (Canada) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | DS_CENTERMOUSE | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Forced Object Naming Dialog" +FONT 8, "MS Sans Serif" +BEGIN + EDITTEXT IDC_EDIT1,63,30,113,12,ES_AUTOHSCROLL + CTEXT "Object Name",IDC_STATIC,34,14,116,11,SS_CENTERIMAGE + PUSHBUTTON "Done",IDC_BUTTON1,66,63,50,14 + EDITTEXT IDC_EDIT2,10,30,52,12,ES_RIGHT | ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP +END + +IDD_DIALOG2 DIALOG DISCARDABLE 0, 0, 186, 82 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Prefix" +FONT 8, "MS Sans Serif" +BEGIN + CTEXT "Set Prefix",IDC_STATIC,36,15,114,8,SS_CENTERIMAGE + EDITTEXT IDC_EDIT1,36,31,114,14,ES_AUTOHSCROLL + PUSHBUTTON "Done",IDC_BUTTON1,63,53,61,14 +END + +IDD_DIALOG3 DIALOG DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | DS_CENTERMOUSE | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Forced Zone Naming Dialog" +FONT 8, "MS Sans Serif" +BEGIN + EDITTEXT IDC_EDIT1,63,30,113,12,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT3,65,49,112,12,ES_AUTOHSCROLL + PUSHBUTTON "Done",IDC_BUTTON1,66,68,50,14 + CTEXT "Object Name",IDC_STATIC,66,14,111,11,SS_CENTERIMAGE + EDITTEXT IDC_EDIT2,10,30,52,12,ES_RIGHT | ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP + LTEXT "P3D File to Load",IDC_STATIC,10,49,56,12,SS_CENTERIMAGE +END + +IDD_DIALOG4 DIALOG DISCARDABLE 0, 0, 186, 111 +STYLE DS_MODALFRAME | DS_CENTERMOUSE | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Action Trigger" +FONT 8, "MS Sans Serif" +BEGIN + EDITTEXT IDC_EDIT1,63,30,113,12,ES_AUTOHSCROLL + COMBOBOX IDC_COMBO1,63,49,114,30,CBS_DROPDOWNLIST | CBS_SORT | + WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO2,63,67,113,30,CBS_DROPDOWNLIST | CBS_SORT | + WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Done",IDC_BUTTON1,66,87,50,14 + CTEXT "Object Name",IDC_STATIC,66,14,111,11,SS_CENTERIMAGE + EDITTEXT IDC_EDIT2,10,30,52,12,ES_RIGHT | ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP + CTEXT "Object",IDC_STATIC,10,49,53,12,SS_CENTERIMAGE + CTEXT "Joint",IDC_STATIC,10,67,53,12,SS_CENTERIMAGE +END + +IDD_DIALOG5 DIALOG DISCARDABLE 0, 0, 186, 95 +STYLE DS_MODALFRAME | DS_CENTERMOUSE | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Forced Script Naming Dialog" +FONT 8, "MS Sans Serif" +BEGIN + EDITTEXT IDC_EDIT1,63,30,113,12,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT3,63,49,114,12,ES_AUTOHSCROLL + PUSHBUTTON "Done",IDC_BUTTON1,66,68,50,14 + CTEXT "Object Name",IDC_STATIC,66,14,111,11,SS_CENTERIMAGE + EDITTEXT IDC_EDIT2,10,30,52,12,ES_RIGHT | ES_AUTOHSCROLL | + ES_READONLY | NOT WS_TABSTOP + CTEXT "Script Name",IDC_STATIC,10,49,53,12,SS_CENTERIMAGE +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_DIALOG1, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + VERTGUIDE, 10 + VERTGUIDE, 176 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + HORZGUIDE, 30 + HORZGUIDE, 42 + END + + IDD_DIALOG2, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + VERTGUIDE, 36 + VERTGUIDE, 93 + VERTGUIDE, 150 + TOPMARGIN, 7 + BOTTOMMARGIN, 75 + HORZGUIDE, 38 + END + + IDD_DIALOG3, DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 179 + VERTGUIDE, 65 + VERTGUIDE, 66 + VERTGUIDE, 176 + VERTGUIDE, 177 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + HORZGUIDE, 30 + HORZGUIDE, 42 + HORZGUIDE, 49 + HORZGUIDE, 61 + END + + IDD_DIALOG4, DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 179 + VERTGUIDE, 63 + VERTGUIDE, 66 + VERTGUIDE, 176 + VERTGUIDE, 177 + TOPMARGIN, 7 + BOTTOMMARGIN, 104 + HORZGUIDE, 30 + HORZGUIDE, 42 + HORZGUIDE, 49 + HORZGUIDE, 61 + END + + IDD_DIALOG5, DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 179 + VERTGUIDE, 63 + VERTGUIDE, 66 + VERTGUIDE, 176 + VERTGUIDE, 177 + TOPMARGIN, 7 + BOTTOMMARGIN, 88 + HORZGUIDE, 30 + HORZGUIDE, 42 + HORZGUIDE, 49 + HORZGUIDE, 61 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "100904b0" + BEGIN + VALUE "Comments", "\0" + VALUE "CompanyName", "Radical Entertainment\0" + VALUE "FileDescription", "worldbuilder\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "worldbuilder\0" + VALUE "LegalCopyright", "Copyright © 2002\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "worldbuilder.mll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Radical Entertainment worldbuilder\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x1009, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE +BEGIN + VK_ESCAPE, IDCANCEL, VIRTKEY, NOINVERT + VK_RETURN, IDOK, VIRTKEY, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON1 ICON DISCARDABLE "icon1.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_DIALOG4 DLGINIT +BEGIN + IDC_COMBO1, 0x403, 2, 0 +0x0031, + IDC_COMBO1, 0x403, 2, 0 +0x0032, + IDC_COMBO1, 0x403, 2, 0 +0x0033, + IDC_COMBO1, 0x403, 2, 0 +0x0034, + IDC_COMBO1, 0x403, 2, 0 +0x0035, + IDC_COMBO1, 0x403, 2, 0 +0x0036, + IDC_COMBO1, 0x403, 2, 0 +0x0037, + IDC_COMBO1, 0x403, 2, 0 +0x0038, + IDC_COMBO1, 0x403, 2, 0 +0x0039, + IDC_COMBO1, 0x403, 2, 0 +0x0030, + 0 +END + +#endif // English (Canada) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/tools/worldbuilder/code/scripts/wb_cleanup.mel b/tools/worldbuilder/code/scripts/wb_cleanup.mel new file mode 100644 index 0000000..1b2f42c --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_cleanup.mel @@ -0,0 +1,11 @@ + +if ( `menu -exists wb_MainMenu` ) +{ + deleteUI wb_MainMenu; + deleteShelfTab ("WorldBuilder"); + + wb_SplinesCleanup(); + wb_CoinSplinesCleanup(); + + flushUndo; +} diff --git a/tools/worldbuilder/code/scripts/wb_coinsplines.mel b/tools/worldbuilder/code/scripts/wb_coinsplines.mel new file mode 100644 index 0000000..750eb3e --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_coinsplines.mel @@ -0,0 +1,53 @@ +global int $gCoinSplineCompleteCB = -1; + +global proc wb_MCB_CreateCoinPath() +{ + global int $gCoinSplineCompleteCB; + + if ( !`contextInfo -exists CoinSplineCtx` ) + { + curveCVCtx -degree 3 -me true -un true CoinSplineCtx; + print "create\n"; + } + else + { + string $currentCtx = `currentCtx`; + + if ( $currentCtx == "CoinSplineCtx" ) + { + print "complete\n"; + ctxCompletion; + + wb_CB_CoinSplineComplete(); + } + } + + print "select\n"; + setToolTo CoinSplineCtx; + + $gCoinSplineCompleteCB = `scriptJob -ro 1 -p "WorldBuilder" -e "ToolChanged" wb_CB_CoinSplineComplete`; +} + +global proc wb_CB_CoinSplineComplete() +{ + print "complete callback\n"; + WB_CoinSplineComplete(); +} + +global proc wb_CoinSplinesCleanup() +{ + print "clean\n"; + global int $gCoinSplineCompleteCB; + + if ( $gCoinSplineCompleteCB != -1 ) + { + scriptJob -k $gCoinSplineCompleteCB; + print "kill job\n"; + } + + if ( `contextInfo -exists CoinSplineCtx` ) + { + print "delete ui\n"; + deleteUI -tc CoinSplineCtx; + } +} diff --git a/tools/worldbuilder/code/scripts/wb_locator.mel b/tools/worldbuilder/code/scripts/wb_locator.mel new file mode 100644 index 0000000..0b46abb --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_locator.mel @@ -0,0 +1,71 @@ +global float $gWB_Offset = 0; + +global proc wb_BCB_CreateLocator( string $type ) +{ + //Start the Locator context... + if ( ! `contextInfo -exists LocatorCtx` ) + { + LocatorContext LocatorCtx; + } + + WB_SetLocatorType($type); + + setToolTo LocatorCtx; +} + +global proc wb_MCB_SnapLocatorOptions() +{ + global float $gWB_Offset; + + if ( `window -exists wb_OptionWindow` ) deleteUI wb_OptionWindow; + + window -title "Snap Locator Options" wb_OptionWindow; + + columnLayout; + + rowLayout -nc 2; + + text -label "Offset (M):"; + + floatField -min -10.0 -max 10.0 -value $gWB_Offset -cc ("$gWB_Offset = #1"); + + setParent ..; + + button -label "snap locator" -command "WB_SnapLocator( $gWB_Offset )"; + + setParent ..; + + showWindow; +} + +global proc wb_BCB_AttachTriggers( string $name, int $isVisibler ) +{ + global int $gIsItVisibler; + + $gIsItVisibler = $isVisibler; + + //Start the Trigger context... + if ( ! `contextInfo -exists TriggerCtx` ) + { + TriggerContext TriggerCtx; + } + + select $name; + + WB_SelectObject( $name ); + + setToolTo TriggerCtx; +} + +global proc wb_LocatorCleanup() +{ + if ( `contextInfo -exists LocatorCtx` ) + { + deleteUI -tc LocatorCtx; + } + + if ( `contextInfo -exists TriggerCtx` ) + { + deleteUI -tc TriggerCtx; + } +}
\ No newline at end of file diff --git a/tools/worldbuilder/code/scripts/wb_main.mel b/tools/worldbuilder/code/scripts/wb_main.mel new file mode 100644 index 0000000..8106946 --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_main.mel @@ -0,0 +1,274 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// WB_main.mel +// +// Description: Installs the World Builder (WB) interface. +// As a convention all World Builder global procedures +// and global variables are prefixed with "wb_". All commands +// exposed through WB plugins are prefixed with "WB_". +// +// MCB = Menu Call Back +// BCB = Button Call Back +// +// Modification History: +// + Created Apr 11, 2001 -- bkusy +// + Stolen & Adapted -- CBrisebois +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// w b _ b r e a k p o i n t +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_breakpoint( string $tag ) +{ + confirmDialog -m ( "BreakPoint: " + $tag ); +} + +//----------------------------------------------------------------------------- +// w b _ M C B _ A b o u t +// +// Synopsis: Display an About World Builder window. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_MCB_About() +{ + string $pluginVersion = "2.0"; + + string $message = ( "\nSimpsons Road Rage World Builder.\n\n" + + "Release " + $pluginVersion + "\n" + + "(c) 2001, Radical Entertainment, Ltd.\n\n" ); + + + confirmDialog -title "About World Builder" + -message $message + -button "OK" + -defaultButton "OK"; +} + +//----------------------------------------------------------------------------- +// w b _ d o M a i n M e n u I w b m s +// +// Synopsis: Creates the WB menu on the menu handle passed in. +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_doMainMenuItems( string $menu ) +{ + global string $gMainWindow; + global float $gWB_Offset; + + menu -edit -tearOff true -allowOptionBoxes true $menu; + + menuItem -label "Display Levels" -sm true; + + menuItem -label "Event Locators" -checkBox true -command "WB_ChangeDisplay(0, #1)"; + + menuItem -label "Script Locators" -checkBox true -command "WB_ChangeDisplay(1, #1)"; + + menuItem -label "Generic Locators" -checkBox true -command "WB_ChangeDisplay(2, #1)"; + + menuItem -label "Car Start Locators" -checkBox true -command "WB_ChangeDisplay(3, #1)"; + + menuItem -label "Dynamic Zone Locators" -checkBox true -command "WB_ChangeDisplay(4, #1)"; + + menuItem -label "Occlusion Locators" -checkBox true -command "WB_ChangeDisplay(5, #1)"; + + menuItem -label "Interior Entrance Locators" -checkBox true -command "WB_ChangeDisplay(7, #1)"; + + menuItem -label "Directional Locators" -checkBox true -command "WB_ChangeDisplay(8, #1)"; + + menuItem -label "Action Locators" -checkBox true -command "WB_ChangeDisplay(9, #1)"; + + menuItem -label "FOV" -checkBox true -command "WB_ChangeDisplay(10, #1)"; + + menuItem -label "Breakable Camera" -checkBox true -command "WB_ChangeDisplay(11, #1)"; + + menuItem -label "Static Camera" -checkBox true -command "WB_ChangeDisplay(12, #1)"; + + menuItem -label "Ped Group" -checkBox true -command "WB_ChangeDisplay(13, #1)"; + + menuItem -divider true; + + menuItem -label "Trigger Volumes" -checkBox true -command "WB_ChangeDisplay(20, #1)"; + + setParent -menu ..; + + menuItem -divider true; + + menuItem -label "Create Camera Path" -command "wb_MCB_CreateCameraPath()"; + + menuItem -label "Create Coin Path" -command "wb_MCB_CreateCoinPath()"; + + menuItem -divider true; + + menuItem -label "Set Prefix" -command "WB_SetPrefix()"; + + menuItem -divider true; + + menuItem -label "Snap Locator" -command "WB_SnapLocator( $gWB_Offset )"; + + menuItem -optionBox true -command "wb_MCB_SnapLocatorOptions()"; + + menuItem -divider true; + + menuItem -label "Export" -command "WB_Export()"; + + menuItem -optionBox true -command "WB_ExportOptions()"; + + menuItem -divider true; + + menuItem -label "About" -command "wb_MCB_About()"; + + setParent -m ..; + + if ( `shelfLayout -exists "WorldBuilder"` == 0 ) + { + addNewShelfTab "WorldBuilder"; + } + + //Delete all the old buttons (in case there was a change).. + string $buttons[] = `shelfLayout -q -ca WorldBuilder`; + + int $i; + + for ( $i = 0; $i < size($buttons); $i++ ) + { + deleteUI $buttons[ $i ]; + } + + //Create all the buttons required.. + shelfButton -c ("wb_BCB_CreateLocator(\"Event\")") + -p "WorldBuilder" + -i1 "eventlocator.bmp" + -ann "Create Event Locator" + -l "Event"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Script\")") + -p "WorldBuilder" + -i1 "scriptlocator.bmp" + -ann "Create Script Locator" + -l "Script"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Generic\")") + -p "WorldBuilder" + -i1 "genericlocator.bmp" + -ann "Create Generic Locator" + -l "Generic"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Car Start\")") + -p "WorldBuilder" + -i1 "carstartlocator.bmp" + -ann "Create Car Start Locator" + -l "Car Start"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Dynamic Zone\")") + -p "WorldBuilder" + -i1 "zonelocator.bmp" + -ann "Create Dynamic Zone Locator" + -l "Dynamic Zone"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Occlusion\")") + -p "WorldBuilder" + -i1 "occlusionlocator.bmp" + -ann "Create Occlusion Locator" + -l "Occlusion"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Interior Entrance\")") + -p "WorldBuilder" + -i1 "interiorlocator.bmp" + -ann "Create Interior Entrance Locator" + -l "Interior Entrance"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Directional\")") + -p "WorldBuilder" + -i1 "directionallocator.bmp" + -ann "Create Directional Locator" + -l "Directional"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Action\")") + -p "WorldBuilder" + -i1 "actionlocator.bmp" + -ann "Create Action Locator" + -l "Action"; + + shelfButton -c ("wb_BCB_CreateLocator(\"FOV\")") + -p "WorldBuilder" + -i1 "fovlocator.bmp" + -ann "Create FOV Locator" + -l "FOV"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Breakable Camera\")") + -p "WorldBuilder" + -i1 "breakablecameralocator.bmp" + -ann "Create Breakable Camera Locator" + -l "Breakable Camera"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Static Camera\")") + -p "WorldBuilder" + -i1 "staticcameralocator.bmp" + -ann "Create Static Camera Locator" + -l "Static Camera"; + + shelfButton -c ("wb_BCB_CreateLocator(\"Ped Group\")") + -p "WorldBuilder" + -i1 "pedgrouplocator.bmp" + -ann "Create Ped Group Locator" + -l "Ped Group"; + +} + + +//----------------------------------------------------------------------------- +// w b _ I n s t a l l U I +// +// Synopsis: +// +// Parameters: NONE +// +// Returns: NOTHING +// +// Constraints: NONE +// +//----------------------------------------------------------------------------- +global proc wb_InstallUI() +{ + + global string $gMainWindow; + + // + // Install WB menu as a root menu. + // + if ( `menu -exists wb_MainMenu` ) deleteUI wb_MainMenu; + menu -label "World Builder" -allowOptionBoxes true -parent $gMainWindow wb_MainMenu; + + wb_doMainMenuItems "wb_MainMenu"; +} + +evalDeferred "wb_InstallUI"; + +source "wb_setup.mel"; +source "wb_locator.mel"; +source "wb_splines.mel"; +source "wb_coinsplines.mel"; +source "AEWBTriggerButton.mel"; +source "AEWBSelectTarget.mel";
\ No newline at end of file diff --git a/tools/worldbuilder/code/scripts/wb_setup.mel b/tools/worldbuilder/code/scripts/wb_setup.mel new file mode 100644 index 0000000..9211390 --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_setup.mel @@ -0,0 +1,6 @@ +//Create the WorldBuilderNode. + + +global proc wb_Create_WorldBuilderNode() +{ +}
\ No newline at end of file diff --git a/tools/worldbuilder/code/scripts/wb_splines.mel b/tools/worldbuilder/code/scripts/wb_splines.mel new file mode 100644 index 0000000..ab99858 --- /dev/null +++ b/tools/worldbuilder/code/scripts/wb_splines.mel @@ -0,0 +1,46 @@ +global int $gSplineCompleteCB = -1; + +global proc wb_MCB_CreateCameraPath() +{ + global int $gSplineCompleteCB; + + if ( !`contextInfo -exists CameraSplineCtx` ) + { + curveCVCtx -degree 3 -me false -un true CameraSplineCtx; + } + else + { + string $currentCtx = `currentCtx`; + + if ( $currentCtx == "CameraSplineCtx" ) + { + ctxCompletion; + + wb_CB_SplineComplete(); + } + } + + setToolTo CameraSplineCtx; + + $gSplineCompleteCB = `scriptJob -ro 1 -p "WorldBuilder" -e "ToolChanged" wb_CB_SplineComplete`; +} + +global proc wb_CB_SplineComplete() +{ + WB_SplineComplete(); +} + +global proc wb_SplinesCleanup() +{ + global int $gSplineCompleteCB; + + if ( $gSplineCompleteCB != -1 ) + { + scriptJob -k $gSplineCompleteCB; + } + + if ( `contextInfo -exists CameraSplineCtx` ) + { + deleteUI -tc CameraSplineCtx; + } +} diff --git a/tools/xboxsync/XboxSync.exe b/tools/xboxsync/XboxSync.exe Binary files differnew file mode 100644 index 0000000..af39518 --- /dev/null +++ b/tools/xboxsync/XboxSync.exe |