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;