1.5.3 更新对象操作


更新是指提供对已有对象进行修改的操作。比如改变场景中相机的夹角、替换场景中模型的贴图等操作。CooRun SDK提供了修改光线效果、地形透明度、模型表面纹理替换等更新操作。

更新操作提供创建、添加、更新、删除四种操作。

更新对象添加

一般来说,在添加更新之前必须先创建更新,因此更新创建和添加是同时使用的。更新添加分为4步操作:

1.调用场景map对象的CreateOperationOptions()接口进行更新配置对象创建。

2.调用第一步创建的更新配置对象的AddConfig()接口,添加配置信息。

3.调用场景map对象的CreateOperation()接口进行更新对象创建。

4.调用场景map对象的AddOperation()接口将更新添加到场景中。

对于更新添加的四步操作来说,主要是第2和第3步操作会有所不同。针对第二步进行参数配置,后续的功能说明会一一讲解。

对于第3步的CreateOperation()接口原型为:CreateOperation(BSTR type, IUnknown* opt)。其中第一个参数代表创建的更新类型,它的取值有以下几种

编号 更新类型 配置说明
1 TextureOperation 模型纹理更新
2 AtmosphereOptions 大气光晕更新
3 HighlightOperation 图层高亮更新
4 ModelOperation 模型坐标高亮更新
5 FeatureIntersectOperation 矢量坐标高亮更新
6 CameraOperation 相机操作更新
7 LightOperation 光照特效操作更新
8 TerrainOperation 地形透明更新

代码调用示例

Javascript调用

var tlo = map.CreateOperationOptions("TerrainOption");//1.创建更新配置对象
//2.设置配置参数 
tlo.AddConfig("OptionsTypeName", "TerrainOption");//地形配置项名称
tlo.AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
tlo.AddConfig("Opacity", 0.5);//透明度值
var oPtr = map.CreateOperation("TerrainOperation", tlo);//3.创建更新对象
oPtr.AddObserver();//添加事件监听
map.AddOperation(oPtr);//4.添加更新对象

C++调用

ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("TerrainOption");//1.创建配置类型,操作类型的配置
//2.设置配置参数
tlo->AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新  
tlo->AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
tlo->AddConfig("Opacity", "0.5");//透明度值(0.0~1.0) 
BaseObjectCOMLib::IOperationObjectPtr oPtr = map->CreateOperation("TerrainOperation", tlo);//3.创建更新对象,TerrainOperation代表地形更新
map->AddOperation(oPtr);//4.添加更新对象

C#调用

var tlo = map.CreateOperationOptions("TerrainOption");//1.创建更新配置对象,任意名称
//2.设置配置参数
tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新  
tlo.AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
tlo.AddConfig("Opacity", 0.5);//透明度值(0.0~1.0) 
IOperationObject oPtr = map.CreateOperation("TerrainOperation", tlo);//3.创建更新对象,TerrainOperation代表地形更新
map.AddOperation(oPtr);//4.添加更新对象

更新对象更新

更新对象更新是对已经添加到场景中的更新进行部分参数更新,以达到改变之前效果的操作。

更新更新一般分为3步操作:

1.调用场景map对象的CreateOperationOptions()接口进行更新配置对象创建。

2.调用第一步创建的更新配置对象的AddConfig()接口,添加配置信息。

3.调用更新对象的UpdateOperationOptions()接口进行更新更新。

代码调用示例

Javascript调用

var tlo = map.CreateOperationOptions("TerrainOption");//1.创建更新配置对象
2.设置配置参数
tlo.AddConfig("OptionsTypeName", "TerrainOption");//地形配置项名称
tlo.AddConfig("Operation", "Opacity");//添加操作类型为透明度操作
tlo.AddConfig("Opacity", 0.5);//透明度值
oPtr.UpdateOperationOptions(tlo);//3.更新更新对象

C++调用

ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("TerrainOption");//1.创建配置类型,操作类型的配置
//2.设置配置参数
tlo->AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
tlo->AddConfig("Opacity", "0.1");//透明度值(0.0~1.0) 
oPtr->UpdateOperationOptions(tlo);//3.更新操作

C#调用

var tlo = map.CreateOperationOptions("TerrainOption");//1.创建更新配置对象,任意名称
//2.设置配置参数
tlo.AddConfig("OptionsTypeName", "TerrainOption");//更新类型,TerrainOption代表地形更新 
tlo.AddConfig("Opacity", 0.1);//透明度值(0.0~1.0) 
oPtr.UpdateOperationOptions(tlo);//3.更新操作

更新对象删除

更新添加到场景中之后,如果需要移除,可以调用RemoveOperation()接口。

代码调用示例

Javascript调用

map.RemoveOperation(oPtr);//移除更新对象
oPtr = null;

C++调用

map->RemoveOperation(oPtr);//移除更新对象
oPtr = NULL;

C#调用

map.RemoveOperation(oPtr);//移除更新对象
oPtr = null;

results matching ""

    No results matching ""