Doom3 CVarSystem分析
来源:互联网 发布:nginx server配置 编辑:程序博客网 时间:2024/05/22 06:27
转发请注明出处
CVarSystem是用来方便管理控制台变量的。其中核心类有idCVar类
与 idCVarSystem。 其中idCVarSystemLocal实现了idCVarSystem类。
声明一个idCVar对象即声明了一个控制台变量,例如:
idCVar my_var("myval0");
但是想象一下,当我们在程序中多处使用一个变量的时候,若我们把我们
所要的数据塞到idCVar类里的话。那么就会出现歧义。也就是有可能出现同名
的变量在多个不同的地方被声明,并且值不同。idCVar类应用了Proxy(代理模式)
这种设计模式。idCVar并不直接持有变量的值。而他通过一个叫intenalVar的
成员变量,而该成员变量同样指向一个idCVar对象。访问idCVar变量的函数都
通过调用intenalVar的同名函数获得。也就是说真正持有数据的intenalVar所指向
的指针。而intenalVar在初始化后会被指向一个idInternalCVar的对象。该
idInternalCVar类继承自idCVar类。在初始化idCVar时会自动在idCVarSystemLocal
控制台变量系统中注册自己。若当前类没有被分配一个internalVar 该 idCVarSystemLocal
会为其分配一个。若看到声明该控制台变量的名称已经在系统中存在同名的internalVar
则让该变量指向这个已存在的idInternalCVar变量。并且尝试更改其值。这种
感觉有点类似于只能指针。你可以向以下方式声明变量:
在某个函数中:
void func1(){
...
idCVar("myval0" , "0" , CVAR_INTEGER , "my frsit val");
...
}
在另一个函数中:
void func2(){
...
idCVar("myval0" , "123" , CVAR_INTEGER , "my val");
...
}
在两处声明的同名控制台变量指向的是一个idInternalCVar对象!
CVarSystem是用来方便管理控制台变量的。其中核心类有idCVar类
与 idCVarSystem。 其中idCVarSystemLocal实现了idCVarSystem类。
声明一个idCVar对象即声明了一个控制台变量,例如:
idCVar my_var("myval0");
但是想象一下,当我们在程序中多处使用一个变量的时候,若我们把我们
所要的数据塞到idCVar类里的话。那么就会出现歧义。也就是有可能出现同名
的变量在多个不同的地方被声明,并且值不同。idCVar类应用了Proxy(代理模式)
这种设计模式。idCVar并不直接持有变量的值。而他通过一个叫intenalVar的
成员变量,而该成员变量同样指向一个idCVar对象。访问idCVar变量的函数都
通过调用intenalVar的同名函数获得。也就是说真正持有数据的intenalVar所指向
的指针。而intenalVar在初始化后会被指向一个idInternalCVar的对象。该
idInternalCVar类继承自idCVar类。在初始化idCVar时会自动在idCVarSystemLocal
控制台变量系统中注册自己。若当前类没有被分配一个internalVar 该 idCVarSystemLocal
会为其分配一个。若看到声明该控制台变量的名称已经在系统中存在同名的internalVar
则让该变量指向这个已存在的idInternalCVar变量。并且尝试更改其值。这种
感觉有点类似于只能指针。你可以向以下方式声明变量:
在某个函数中:
void func1(){
...
idCVar("myval0" , "0" , CVAR_INTEGER , "my frsit val");
...
}
在另一个函数中:
void func2(){
...
idCVar("myval0" , "123" , CVAR_INTEGER , "my val");
...
}
在两处声明的同名控制台变量指向的是一个idInternalCVar对象!
- Doom3 CVarSystem分析
- Doom3引擎初始化分析
- doom3技术分析
- Doom3 引擎渲染管线分析
- DOOM3 源码分析笔记(1)
- Doom3
- doom3关卡编辑器代码的一些分析
- DOOM3源码分析相关文章集合
- Doom3通关
- Doom3 - Begin
- doom3终于出来了
- Rocketboy ! ! ! Champion CPL Doom3! ! !
- DOOM3 命令系统分析
- doom3 aas部分
- doom3的UI系统
- doom3 代码结构
- doom3 entitydef实体定义
- doom3中PDA信息
- DOOM3 命令系统分析
- Doom3 引擎渲染管线分析
- 简单函数与构造函数的区别?
- 条款一:Distinguish between pointers and references
- 我的第一个CSDN博客——找实习 到 实习 的一些感想
- Doom3 CVarSystem分析
- UE快捷键
- 有关ubuntu下面更新后有线不能上网的问题的解决方法
- 主题:Rails宝典之第七式: layout详解
- PHP和mysql做用户登录验证 .
- 实现PHP用户的注册与登录 .
- ajax检测用户名 .
- 协议编码压缩
- viewWillAppear:等无法调用的总结