@@ -74,6 +74,77 @@ package com.pblabs.engine.core
74
74
_objects [ object. name ] = null ;
75
75
delete _objects [ object. name ];
76
76
}
77
+
78
+ unregisterAliases(object);
79
+ }
80
+
81
+
82
+ /**
83
+ * Register an alias for an IPBObject
84
+ * @param object The object to register the alias for
85
+ * @param alias The alias to register
86
+ **/
87
+ public function registerAlias (object :IPBObject , alias :String ):void
88
+ {
89
+ if (alias == null || alias == "" )
90
+ {
91
+ Logger. warn (this , "registerAlias" , "Attempt made to register invalid alias '" + alias+ "'" );
92
+ return ;
93
+ }
94
+
95
+ if (_objects [ alias] )
96
+ {
97
+ Logger. warn (this , "registerAlias" ,"A PBObject with the name '" + alias + "' already exists " );
98
+ return ;
99
+ }
100
+
101
+ _objects [ alias] = object;
102
+
103
+ //Store the alias in the registeredAliases map
104
+ if (! _registeredAliases [ object] )
105
+ _registeredAliases [ object] = [];
106
+ _registeredAliases [ object] . push (alias);
107
+ }
108
+
109
+ /**
110
+ * Unregister an alias for an IPBObject
111
+ * @param object The object to register the alias for.
112
+ * @param alias The alias to unregister.
113
+ **/
114
+ public function unregisterAlias (object :IPBObject , alias :String ):void
115
+ {
116
+ // Check if the alias exists, points to the IPBObject and is an alias.
117
+ if (_objects [ alias] && _objects [ alias] == object
118
+ && _registeredAliases [ object] && _registeredAliases [ object] . indexOf (alias) > - 1 )
119
+ {
120
+ _objects [ alias] = null ;
121
+ delete _objects [ alias];
122
+
123
+ _registeredAliases [ object] . splice (_registeredAliases [ object] . indexOf (alias), 1 );
124
+ if (_registeredAliases [ object] . length < 1 )
125
+ delete _registeredAliases [ object];
126
+ }
127
+ else
128
+ {
129
+ Logger. warn (this , "unregisterAlias" , "Attempt made to unregister alias '" + alias+ "' but the object registered is not the same or the alias is not a registered alias." );
130
+ return ;
131
+ }
132
+ }
133
+ /**
134
+ * Unregister all aliases for an IPBObject
135
+ * @param object The IPBObject to unregister.
136
+ **/
137
+ public function unregisterAliases (object :IPBObject ):void {
138
+ if (! _registeredAliases [ object] )
139
+ return ;
140
+
141
+ for each (var alias: String in _registeredAliases [ object] )
142
+ {
143
+ _objects [ alias] = null ;
144
+ delete _objects [ alias];
145
+ }
146
+
147
+ delete _registeredAliases [ object];
77
148
}
78
149
79
150
/**
@@ -165,5 +236,9 @@ package com.pblabs.engine.core
165
236
}
166
237
167
238
private var _objects : Dictionary = new Dictionary ();
239
+
240
+ //Map from PBObject -> String[] that contains all registered aliases
241
+ private var _registeredAliases : Dictionary = new Dictionary ();
242
+
168
243
}
169
244
}
0 commit comments