00001 // 00002 // sgObject.h 00003 // iSDGE 00004 // 00005 // Created by Nils Daumann on 17.04.10. 00006 // Copyright (c) 2010 Nils Daumann 00007 00008 // Permission is hereby granted, free of charge, to any person obtaining a copy 00009 // of this software and associated documentation files (the "Software"), to deal 00010 // in the Software without restriction, including without limitation the rights 00011 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00012 // copies of the Software, and to permit persons to whom the Software is 00013 // furnished to do so, subject to the following conditions: 00014 00015 // The above copyright notice and this permission notice shall be included in 00016 // all copies or substantial portions of the Software. 00017 00018 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00019 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00020 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00021 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00022 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00023 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00024 // THE SOFTWARE. 00025 00026 #import <vector> 00027 #import <string> 00028 00029 #import "sgBase.h" 00030 #import "sgRessourceManager.h" 00031 #import "sgVertex.h" 00032 #import "sgMesh.h" 00033 #import "sgMaterial.h" 00034 #import "sgVector3.h" 00035 #import "sgQuaternion.h" 00036 #import "sgMatrix4x4.h" 00037 00041 class sgObjectContainer : public sgBase 00042 { 00043 public: 00044 std::vector<sgMesh*>meshs; 00045 std::vector<sgMaterial*>materials; 00046 }; 00047 00051 class sgObject 00052 { 00053 public: 00060 sgObject(sgObject *p, sgObject *n); 00061 00068 sgObject *createObject(const char *name); 00069 00075 void cloneMaterial(unsigned int mat); 00076 00083 void setAnimation(const char *name, float percent); 00084 00089 void destroy(); 00090 00095 void destroyAll(); 00096 00101 void updateModel(); 00102 00107 sgVector3 position; 00108 00113 sgQuaternion rotation; 00114 00119 sgVector3 scale; 00120 00125 sgMatrix4x4 matmodel; 00126 00131 sgMatrix4x4 matnormal; 00132 00137 std::vector<sgMaterial*> materials; 00138 00143 std::vector<sgMesh*> meshs; 00144 00149 sgObject *next; 00150 00155 sgObject *prev; 00156 };