void LandscapePropertyControl::ReadFrom(SceneNode * sceneNode) { NodesPropertyControl::ReadFrom(sceneNode); LandscapeNode *landscape = dynamic_cast<LandscapeNode*> (sceneNode); DVASSERT(landscape); propertyList->AddSection("property.landscape.landscape", GetHeaderState("property.landscape.landscape", true)); propertyList->AddFloatProperty("property.landscape.size", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("property.landscape.height", PropertyList::PROPERTY_IS_EDITABLE); Vector3 size(445.0f, 445.0f, 50.f); AABBox3 bbox = landscape->GetBoundingBox(); AABBox3 emptyBox; if((emptyBox.min != bbox.min) && (emptyBox.max != bbox.max)) { AABBox3 transformedBox; bbox.GetTransformedBox(landscape->GetWorldTransform(), transformedBox); size = transformedBox.max - transformedBox.min; } propertyList->SetFloatPropertyValue("property.landscape.size", size.x); propertyList->SetFloatPropertyValue("property.landscape.height", size.z); propertyList->AddComboProperty("property.landscape.tilemode", tiledModes); propertyList->SetComboPropertyIndex("property.landscape.tilemode", landscape->GetTiledShaderMode()); propertyList->AddFilepathProperty("property.landscape.heightmap", ".png;.heightmap", false, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetFilepathPropertyValue("property.landscape.heightmap", landscape->GetHeightmapPathname()); propertyList->AddSubsection("property.landscape.subsection.textures"); AddFilepathProperty(String("property.landscape.texture.color"), String(".png;.pvr"), LandscapeNode::TEXTURE_COLOR); AddFilepathProperty(String("property.landscape.texture.tile0"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE0); AddFilepathProperty(String("property.landscape.texture.tile1"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE1); AddFilepathProperty(String("property.landscape.texture.tile2"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE2); AddFilepathProperty(String("property.landscape.texture.tile3"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE3); AddFilepathProperty(String("property.landscape.texture.tilemask"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE_MASK); AddFilepathProperty(String("property.landscape.texture.tiledtexture"), String(".png;.pvr"), LandscapeNode::TEXTURE_TILE_FULL); propertyList->AddMessageProperty(String("property.landscape.generatefulltiled"), Message(this, &LandscapePropertyControl::GenerateFullTiledTexture)); propertyList->AddSubsection("property.landscape.subsection.build_mask"); propertyList->AddFilepathProperty("property.landscape.lightmap", String(".png;.pvr"), true, PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFilepathProperty("property.landscape.alphamask", String(".png;.pvr"), true, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetFilepathPropertyValue("property.landscape.lightmap", String("")); propertyList->SetFilepathPropertyValue("property.landscape.alphamask", String("")); propertyList->AddBoolProperty("property.landscape.showgrid", PropertyList::PROPERTY_IS_EDITABLE); bool showGrid = (0 != (landscape->GetDebugFlags() & SceneNode::DEBUG_DRAW_GRID)); propertyList->SetBoolPropertyValue("property.landscape.showgrid", showGrid); propertyList->AddIntProperty("lightmap.size"); propertyList->SetIntPropertyValue("lightmap.size", currentSceneNode->GetCustomProperties()->GetInt32("lightmap.size", 1024)); propertyList->AddFloatProperty("property.landscape.texture0.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture0.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE0).x); propertyList->AddFloatProperty("property.landscape.texture0.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture0.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE0).y); propertyList->AddFloatProperty("property.landscape.texture1.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture1.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE1).x); propertyList->AddFloatProperty("property.landscape.texture1.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture1.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE1).y); propertyList->AddFloatProperty("property.landscape.texture2.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture2.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE2).x); propertyList->AddFloatProperty("property.landscape.texture2.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture2.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE2).y); propertyList->AddFloatProperty("property.landscape.texture3.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture3.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE3).x); propertyList->AddFloatProperty("property.landscape.texture3.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture3.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE3).y); ControlsFactory::AddFogSubsection(propertyList, landscape->IsFogEnabled(), landscape->GetFogDensity(), landscape->GetFogColor()); }
void MeshInstancePropertyControl::ReadFrom(Entity * sceneNode) { NodesPropertyControl::ReadFrom(sceneNode); MeshInstanceNode *mesh = dynamic_cast<MeshInstanceNode *> (sceneNode); DVASSERT(mesh); propertyList->AddSection("property.meshinstance.meshinstance", GetHeaderState("property.meshinstance.meshinstance", true)); //BBOX AABBox3 bbox = mesh->GetBoundingBox(); AABBox3 transformedBox; bbox.GetTransformedBox(mesh->GetWorldTransform(), transformedBox); propertyList->AddStringProperty("property.meshinstance.bboxmin", PropertyList::PROPERTY_IS_READ_ONLY); propertyList->AddStringProperty("property.meshinstance.bboxmax", PropertyList::PROPERTY_IS_READ_ONLY); propertyList->SetStringPropertyValue("property.meshinstance.bboxmin", Format("%0.2f, %0.2f, %0.2f", transformedBox.min.x, transformedBox.min.y, transformedBox.min.z)); propertyList->SetStringPropertyValue("property.meshinstance.bboxmax", Format("%0.2f, %0.2f, %0.2f", transformedBox.max.x, transformedBox.max.y, transformedBox.max.z)); materials.clear(); materialNames.clear(); if(workingScene) { workingScene->GetDataNodes(materials); } int32 matCount = (int32)materials.size(); for(int32 i = 0; i < matCount; ++i) { Material *mat = materials[i]; materialNames.push_back(mat->GetName()); } Vector<PolygonGroupWithMaterial*> polygroups = mesh->GetPolygonGroups(); for(int32 i = 0; i < (int32)polygroups.size(); ++i) { PolygonGroup *pg = polygroups[i]->GetPolygonGroup(); String fieldName = Format("PolygonGroup #%d", i); propertyList->AddSection(fieldName, GetHeaderState(fieldName, true)); int32 vertexFormat = pg->GetFormat(); String keyPrefix = Format("#%d", i); propertyList->AddBoolProperty(keyPrefix + ". fmt.NORMAL", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.NORMAL", 0 != (vertexFormat & EVF_NORMAL)); propertyList->AddBoolProperty(keyPrefix + ". fmt.COLOR", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.COLOR", 0 != (vertexFormat & EVF_COLOR)); propertyList->AddBoolProperty(keyPrefix + ". fmt.TEXCOORD0", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.TEXCOORD0", 0 != (vertexFormat & EVF_TEXCOORD0)); propertyList->AddBoolProperty(keyPrefix + ". fmt.TEXCOORD1", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.TEXCOORD1", 0 != (vertexFormat & EVF_TEXCOORD1)); propertyList->AddBoolProperty(keyPrefix + ". fmt.TEXCOORD2", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.TEXCOORD2", 0 != (vertexFormat & EVF_TEXCOORD2)); propertyList->AddBoolProperty(keyPrefix + ". fmt.TEXCOORD3", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.TEXCOORD3", 0 != (vertexFormat & EVF_TEXCOORD3)); propertyList->AddBoolProperty(keyPrefix + ". fmt.TANGENT", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.TANGENT", 0 != (vertexFormat & EVF_TANGENT)); propertyList->AddBoolProperty(keyPrefix + ". fmt.BINORMAL", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.BINORMAL", 0 != (vertexFormat & EVF_BINORMAL)); propertyList->AddBoolProperty(keyPrefix + ". fmt.JOINTWEIGHT", PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetBoolPropertyValue(keyPrefix + ". fmt.JOINTWEIGHT", 0 != (vertexFormat & EVF_JOINTWEIGHT)); propertyList->AddIntProperty(keyPrefix + ".lightmap.size"); propertyList->SetIntPropertyValue(keyPrefix + ".lightmap.size", currentSceneNode->GetCustomProperties()->GetInt32(keyPrefix + ".lightmap.size", 128)); if(matCount && !createNodeProperties) { String comboName = keyPrefix + ". Material"; propertyList->AddComboProperty(comboName, materialNames); if(polygroups[i]->GetMaterial()) { String meshMatName = polygroups[i]->GetMaterial()->GetName(); for(int32 iMat = 0; iMat < (int32)materials.size(); ++iMat) { if(meshMatName == materialNames[iMat]) { propertyList->SetComboPropertyIndex(comboName, iMat); break; } } } else { propertyList->SetComboPropertyIndex(comboName, 0); } propertyList->AddMessageProperty("property.meshinstance.editmaterial", Message(this, &MeshInstancePropertyControl::OnGo2Materials, polygroups[i]->GetMaterial())); } propertyList->AddMessageProperty("property.meshinstance.showtriangles", Message(this, &MeshInstancePropertyControl::OnShowTexture, pg)); } propertyList->AddSection("property.meshinstance.dynamicshadow", GetHeaderState("property.meshinstance.dynamicshadow", true)); propertyList->AddBoolProperty("property.meshinstance.dynamicshadow.enable"); propertyList->SetBoolPropertyValue("property.meshinstance.dynamicshadow.enable", currentSceneNode->GetCustomProperties()->GetBool("property.meshinstance.dynamicshadow.enable", false)); propertyList->AddMessageProperty("property.meshinstance.dynamicshadow.converttovolume", Message(this, &MeshInstancePropertyControl::OnConvertToShadowVolume)); }
void LandscapePropertyControl::ReadFrom(SceneNode * sceneNode) { NodesPropertyControl::ReadFrom(sceneNode); LandscapeNode *landscape = GetLandscape(); if (!landscape) return; propertyList->AddSection("property.landscape.landscape", GetHeaderState("property.landscape.landscape", true)); propertyList->AddFloatProperty("property.landscape.size", PropertyList::PROPERTY_IS_EDITABLE); propertyList->AddFloatProperty("property.landscape.height", PropertyList::PROPERTY_IS_EDITABLE); Vector3 size(445.0f, 445.0f, 50.f); AABBox3 bbox = landscape->GetBoundingBox(); AABBox3 emptyBox; if((emptyBox.min != bbox.min) && (emptyBox.max != bbox.max)) { AABBox3 transformedBox; bbox.GetTransformedBox(*landscape->GetWorldTransformPtr(), transformedBox); size = transformedBox.max - transformedBox.min; } propertyList->SetFloatPropertyValue("property.landscape.size", size.x); propertyList->SetFloatPropertyValue("property.landscape.height", size.z); propertyList->AddComboProperty("property.landscape.tilemode", tiledModes); propertyList->SetComboPropertyIndex("property.landscape.tilemode", landscape->GetTiledShaderMode()); propertyList->AddFilepathProperty("property.landscape.heightmap", ".png;.heightmap", false, PropertyList::PROPERTY_IS_EDITABLE); propertyList->SetFilepathPropertyValue("property.landscape.heightmap", landscape->GetHeightmapPathname()); propertyList->AddSubsection("property.landscape.subsection.textures"); AddFilepathProperty(String("property.landscape.texture.color"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_COLOR); AddFilepathProperty(String("property.landscape.texture.tile0"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE0); AddFilepathProperty(String("property.landscape.texture.tile1"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE1); AddFilepathProperty(String("property.landscape.texture.tile2"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE2); AddFilepathProperty(String("property.landscape.texture.tile3"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE3); AddFilepathProperty(String("property.landscape.texture.tilemask"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE_MASK); AddFilepathProperty(String("property.landscape.texture.tiledtexture"), TextureDescriptor::GetSupportedTextureExtensions(), LandscapeNode::TEXTURE_TILE_FULL); propertyList->AddColorProperty("property.landscape.texture.tilecolor0"); propertyList->SetColorPropertyValue("property.landscape.texture.tilecolor0", landscape->GetTileColor(LandscapeNode::TEXTURE_TILE0)); propertyList->AddColorProperty("property.landscape.texture.tilecolor1"); propertyList->SetColorPropertyValue("property.landscape.texture.tilecolor1", landscape->GetTileColor(LandscapeNode::TEXTURE_TILE1)); propertyList->AddColorProperty("property.landscape.texture.tilecolor2"); propertyList->SetColorPropertyValue("property.landscape.texture.tilecolor2", landscape->GetTileColor(LandscapeNode::TEXTURE_TILE2)); propertyList->AddColorProperty("property.landscape.texture.tilecolor3"); propertyList->SetColorPropertyValue("property.landscape.texture.tilecolor3", landscape->GetTileColor(LandscapeNode::TEXTURE_TILE3)); propertyList->AddMessageProperty(String("property.landscape.generatefulltiled"), Message(this, &LandscapePropertyControl::GenerateFullTiledTexture)); propertyList->AddMessageProperty(String("property.landscape.saveheightmaptopng"), Message(this, &LandscapePropertyControl::SaveHeightmapToPng)); propertyList->AddBoolProperty("property.landscape.showgrid", PropertyList::PROPERTY_IS_EDITABLE); // RETURN TO THIS CODE LATER // bool showGrid = (0 != (landscape->GetDebugFlags() & DebugRenderComponent::DEBUG_DRAW_GRID)); bool showGrid = false; propertyList->SetBoolPropertyValue("property.landscape.showgrid", showGrid); propertyList->AddIntProperty("lightmap.size"); propertyList->SetIntPropertyValue("lightmap.size", currentSceneNode->GetCustomProperties()->GetInt32("lightmap.size", 1024)); propertyList->AddFloatProperty("property.landscape.texture0.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture0.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE0).x); propertyList->AddFloatProperty("property.landscape.texture0.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture0.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE0).y); propertyList->AddFloatProperty("property.landscape.texture1.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture1.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE1).x); propertyList->AddFloatProperty("property.landscape.texture1.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture1.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE1).y); propertyList->AddFloatProperty("property.landscape.texture2.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture2.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE2).x); propertyList->AddFloatProperty("property.landscape.texture2.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture2.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE2).y); propertyList->AddFloatProperty("property.landscape.texture3.tilex"); propertyList->SetFloatPropertyValue("property.landscape.texture3.tilex", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE3).x); propertyList->AddFloatProperty("property.landscape.texture3.tiley"); propertyList->SetFloatPropertyValue("property.landscape.texture3.tiley", landscape->GetTextureTiling(LandscapeNode::TEXTURE_TILE3).y); ControlsFactory::AddFogSubsection(propertyList, landscape->IsFogEnabled(), landscape->GetFogDensity(), landscape->GetFogColor()); }