| 227 | } |
| 228 | |
| 229 | Fvector2 CMapLocation::Direction() |
| 230 | { |
| 231 | if (IsUserDefined() || m_cached.m_updatedFrame == Device.dwFrame) |
| 232 | return m_cached.m_Direction; |
| 233 | |
| 234 | Fvector2 res; |
| 235 | res.set(0.0f, 0.0f); |
| 236 | |
| 237 | if (Level().CurrentViewEntity() && Level().CurrentViewEntity()->ID() == m_objectID) |
| 238 | { |
| 239 | res.set(Device.vCameraDirection.x, Device.vCameraDirection.z); |
| 240 | } |
| 241 | else |
| 242 | { |
| 243 | CObject* pObject = Level().Objects.net_Find(m_objectID); |
| 244 | if (!pObject) |
| 245 | res.set(0.0f, 0.0f); |
| 246 | else |
| 247 | { |
| 248 | const Fvector& op = pObject->Direction(); |
| 249 | res.set(op.x, op.z); |
| 250 | } |
| 251 | } |
| 252 | |
| 253 | if (m_flags.test(ePosToActor)) |
| 254 | { |
| 255 | CObject* pObject = Level().Objects.net_Find(m_objectID); |
| 256 | if (pObject) |
| 257 | { |
| 258 | Fvector2 dcp, obj_pos; |
| 259 | dcp.set(Device.vCameraPosition.x, Device.vCameraPosition.z); |
| 260 | obj_pos.set(pObject->Position().x, pObject->Position().z); |
| 261 | res.sub(obj_pos, dcp); |
| 262 | res.normalize_safe(); |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | m_cached.m_Direction = res; |
| 267 | return res; |
| 268 | } |
| 269 | |
| 270 | shared_str CMapLocation::LevelName() |
| 271 | { |
no test coverage detected