void LandscapePropertyControl::SaveHeightmapToPng(DAVA::BaseObject *object, void *userData, void *callerData) { LandscapeNode *landscape = GetLandscape(); if (!landscape) return; Heightmap * heightmap = landscape->GetHeightmap(); String heightmapPath = landscape->GetHeightmapPathname(); heightmapPath = FileSystem::ReplaceExtension(heightmapPath, ".png"); heightmap->SaveToImage(heightmapPath); }
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 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()); }