1.1 --- a/plugins/include/entity.inc Wed Apr 11 20:07:20 2007 +0000
1.2 +++ b/plugins/include/entity.inc Thu Apr 12 00:45:53 2007 +0000
1.3 @@ -290,6 +290,16 @@
1.4 native FindSendPropOffs(const String:cls[], const String:prop[]);
1.5
1.6 /**
1.7 + * Given an entity, finds a datamap property offset.
1.8 + * This information is cached for future calls.
1.9 + *
1.10 + * @param entity Entity index.
1.11 + * @param prop Property name.
1.12 + * @return An offset, or -1 on failure.
1.13 + */
1.14 +native FindDataMapOffs(entity, const String:prop[]);
1.15 +
1.16 +/**
1.17 * Wrapper function for finding a send property for a particular entity.
1.18 *
1.19 * @param ent Entity index.
1.20 @@ -320,11 +330,29 @@
1.21 */
1.22 stock GetEntProp(entity, PropType:type, const String:prop[], size=4)
1.23 {
1.24 - new offs = GetEntSendPropOffs(entity, prop);
1.25 + new offs;
1.26 +
1.27 + switch (type)
1.28 + {
1.29 + case Prop_Send:
1.30 + {
1.31 + offs = GetEntSendPropOffs(entity, prop);
1.32 + }
1.33 + case Prop_Data:
1.34 + {
1.35 + offs = FindDataMapOffs(entity, prop);
1.36 + }
1.37 + default:
1.38 + {
1.39 + ThrowError("Invalid Property type %d", type);
1.40 + }
1.41 + }
1.42 +
1.43 if (offs == -1)
1.44 {
1.45 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.46 }
1.47 +
1.48 return GetEntData(entity, offs, size);
1.49 }
1.50
1.51 @@ -340,11 +368,29 @@
1.52 */
1.53 stock SetEntProp(entity, PropType:type, const String:prop[], value, size=4)
1.54 {
1.55 - new offs = GetEntSendPropOffs(entity, prop);
1.56 + new offs;
1.57 +
1.58 + switch (type)
1.59 + {
1.60 + case Prop_Send:
1.61 + {
1.62 + offs = GetEntSendPropOffs(entity, prop);
1.63 + }
1.64 + case Prop_Data:
1.65 + {
1.66 + offs = FindDataMapOffs(entity, prop);
1.67 + }
1.68 + default:
1.69 + {
1.70 + ThrowError("Invalid Property type %d", type);
1.71 + }
1.72 + }
1.73 +
1.74 if (offs == -1)
1.75 {
1.76 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.77 }
1.78 +
1.79 return SetEntData(entity, offs, value, size, true);
1.80 }
1.81
1.82 @@ -359,11 +405,29 @@
1.83 */
1.84 stock Float:GetEntPropFloat(entity, PropType:type, const String:prop[])
1.85 {
1.86 - new offs = GetEntSendPropOffs(entity, prop);
1.87 + new offs;
1.88 +
1.89 + switch (type)
1.90 + {
1.91 + case Prop_Send:
1.92 + {
1.93 + offs = GetEntSendPropOffs(entity, prop);
1.94 + }
1.95 + case Prop_Data:
1.96 + {
1.97 + offs = FindDataMapOffs(entity, prop);
1.98 + }
1.99 + default:
1.100 + {
1.101 + ThrowError("Invalid Property type %d", type);
1.102 + }
1.103 + }
1.104 +
1.105 if (offs == -1)
1.106 {
1.107 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.108 }
1.109 +
1.110 return GetEntDataFloat(entity, offs);
1.111 }
1.112
1.113 @@ -379,11 +443,29 @@
1.114 */
1.115 stock SetEntPropFloat(entity, PropType:type, const String:prop[], Float:value)
1.116 {
1.117 - new offs = GetEntSendPropOffs(entity, prop);
1.118 + new offs;
1.119 +
1.120 + switch (type)
1.121 + {
1.122 + case Prop_Send:
1.123 + {
1.124 + offs = GetEntSendPropOffs(entity, prop);
1.125 + }
1.126 + case Prop_Data:
1.127 + {
1.128 + offs = FindDataMapOffs(entity, prop);
1.129 + }
1.130 + default:
1.131 + {
1.132 + ThrowError("Invalid Property type %d", type);
1.133 + }
1.134 + }
1.135 +
1.136 if (offs == -1)
1.137 {
1.138 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.139 }
1.140 +
1.141 return SetEntDataFloat(entity, offs, value, true);
1.142 }
1.143
1.144 @@ -398,11 +480,29 @@
1.145 */
1.146 stock GetEntPropEnt(entity, PropType:type, const String:prop[])
1.147 {
1.148 - new offs = GetEntSendPropOffs(entity, prop);
1.149 + new offs;
1.150 +
1.151 + switch (type)
1.152 + {
1.153 + case Prop_Send:
1.154 + {
1.155 + offs = GetEntSendPropOffs(entity, prop);
1.156 + }
1.157 + case Prop_Data:
1.158 + {
1.159 + offs = FindDataMapOffs(entity, prop);
1.160 + }
1.161 + default:
1.162 + {
1.163 + ThrowError("Invalid Property type %d", type);
1.164 + }
1.165 + }
1.166 +
1.167 if (offs == -1)
1.168 {
1.169 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.170 }
1.171 +
1.172 return GetEntDataEnt(entity, offs);
1.173 }
1.174
1.175 @@ -418,11 +518,29 @@
1.176 */
1.177 stock SetEntPropEnt(entity, PropType:type, const String:prop[], other)
1.178 {
1.179 - new offs = GetEntSendPropOffs(entity, prop);
1.180 + new offs;
1.181 +
1.182 + switch (type)
1.183 + {
1.184 + case Prop_Send:
1.185 + {
1.186 + offs = GetEntSendPropOffs(entity, prop);
1.187 + }
1.188 + case Prop_Data:
1.189 + {
1.190 + offs = FindDataMapOffs(entity, prop);
1.191 + }
1.192 + default:
1.193 + {
1.194 + ThrowError("Invalid Property type %d", type);
1.195 + }
1.196 + }
1.197 +
1.198 if (offs == -1)
1.199 {
1.200 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.201 }
1.202 +
1.203 return SetEntDataEnt(entity, offs, other, true);
1.204 }
1.205
1.206 @@ -440,11 +558,29 @@
1.207 */
1.208 stock GetEntPropVector(entity, PropType:type, const String:prop[], Float:vec[3])
1.209 {
1.210 - new offs = GetEntSendPropOffs(entity, prop);
1.211 + new offs;
1.212 +
1.213 + switch (type)
1.214 + {
1.215 + case Prop_Send:
1.216 + {
1.217 + offs = GetEntSendPropOffs(entity, prop);
1.218 + }
1.219 + case Prop_Data:
1.220 + {
1.221 + offs = FindDataMapOffs(entity, prop);
1.222 + }
1.223 + default:
1.224 + {
1.225 + ThrowError("Invalid Property type %d", type);
1.226 + }
1.227 + }
1.228 +
1.229 if (offs == -1)
1.230 {
1.231 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.232 }
1.233 +
1.234 return GetEntDataVector(entity, offs, vec);
1.235 }
1.236
1.237 @@ -462,10 +598,28 @@
1.238 */
1.239 stock SetEntPropVector(entity, PropType:type, const String:prop[], const Float:vec[3])
1.240 {
1.241 - new offs = GetEntSendPropOffs(entity, prop);
1.242 + new offs;
1.243 +
1.244 + switch (type)
1.245 + {
1.246 + case Prop_Send:
1.247 + {
1.248 + offs = GetEntSendPropOffs(entity, prop);
1.249 + }
1.250 + case Prop_Data:
1.251 + {
1.252 + offs = FindDataMapOffs(entity, prop);
1.253 + }
1.254 + default:
1.255 + {
1.256 + ThrowError("Invalid Property type %d", type);
1.257 + }
1.258 + }
1.259 +
1.260 if (offs == -1)
1.261 {
1.262 ThrowError("Property \"%s\" not found for entity %d", prop, entity);
1.263 }
1.264 +
1.265 return SetEntDataVector(entity, offs, vec, true);
1.266 }