{"action":"created","issue":{"url":"https://api.github.com/repos/OpenXRay/xray-16/issues/148","repository_url":"https://api.github.com/repos/OpenXRay/xray-16","labels_url":"https://api.github.com/repos/OpenXRay/xray-16/issues/148/labels{/name}","comments_url":"https://api.github.com/repos/OpenXRay/xray-16/issues/148/comments","events_url":"https://api.github.com/repos/OpenXRay/xray-16/issues/148/events","html_url":"https://github.com/OpenXRay/xray-16/issues/148","id":188871781,"number":148,"title":"VS Compiler related camera animation glitch","user":{"login":"ShokerStlk","id":17707013,"avatar_url":"https://avatars.githubusercontent.com/u/17707013?v=3","gravatar_id":"","url":"https://api.github.com/users/ShokerStlk","html_url":"https://github.com/ShokerStlk","followers_url":"https://api.github.com/users/ShokerStlk/followers","following_url":"https://api.github.com/users/ShokerStlk/following{/other_user}","gists_url":"https://api.github.com/users/ShokerStlk/gists{/gist_id}","starred_url":"https://api.github.com/users/ShokerStlk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShokerStlk/subscriptions","organizations_url":"https://api.github.com/users/ShokerStlk/orgs","repos_url":"https://api.github.com/users/ShokerStlk/repos","events_url":"https://api.github.com/users/ShokerStlk/events{/privacy}","received_events_url":"https://api.github.com/users/ShokerStlk/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-11-11T23:18:05Z","updated_at":"2016-11-12T13:38:45Z","closed_at":null,"body":"Bad english below. (sry)\r\n\r\nВо время работы с OpenXRay я заметил что некоторые анимации камеры игрока ведут себя странно - в частности стали слишком ярко выражены. \r\n\r\nЛегче всего это видно в анимациях стрейфа с оружием (когда мы стоим на месте и вдруг идём влево или вправо): _\"\\gamedata\\anims\\camera_effects\\actor_move\\strafe_left.anm\"_ и  _\"\\gamedata\\anims\\camera_effects\\actor_move\\strafe_right.anm\"_\r\nТут в архиве приведён видео-пример - https://www.dropbox.com/s/0j3yrmsncupcyc1/cam_anim_error.zip?dl=0.\r\n\r\nС OpenXRay во время их проигрывания оружие скачет чуть ли не на пол экрана. \r\n\r\nПосле поисков удалось обнаружить что причина странного поведения кроется в функции - CAnimatorCamLerpEffector::ProcessCam (ActorEffector.h)\r\n\r\n```\r\nclass CAnimatorCamEffector :public CEffectorCam\r\nclass CAnimatorCamLerpEffector :public CAnimatorCamEffector\r\n...\r\nBOOL CAnimatorCamLerpEffector::ProcessCam(SCamEffectorInfo& info)\r\n{\r\n       if(!inherited::inherited::ProcessCam(info))\treturn FALSE;  \r\n//     if(!CAnimatorCamEffector::CEffectorCam::ProcessCam(info))\treturn FALSE;\r\n        ....\r\n```\r\n\r\nПо логике здесь должна вызваться функция CEffectorCam::ProcessCam(), однако по какой то причине вместо неё идёт вызов CAnimatorCamEffector::ProcessCam(). Из за чего вся анимация проигрывается некорректно. \r\n\r\nЕсли эту строку заменить на:\r\n\r\n```\r\nBOOL CAnimatorCamLerpEffector::ProcessCam(SCamEffectorInfo& info)\r\n{\r\n     if(!CEffectorCam::ProcessCam(info))\treturn FALSE;\r\n        ...\r\n```\r\nТо всё начинает работать \"как в оригинале\".\r\n\r\nПричём самое интересное, что сама студия с IntelSense подсвечивает в той строке ошибку о том, что один из inherited не доступен, т.к является protected\\private, **однако при этом проект полностью собирается и даже не кидает предупреждение\\ошибку**. Я посмотрел оригинал, там точно такая-же строка. \r\n\r\n![error](https://cloud.githubusercontent.com/assets/17707013/20232668/f69c8f2c-a87a-11e6-8241-02e6b5c6ed8e.PNG)\r\n\r\nПолучается это какие то \"особенности\" 2015 студии или C++11?\r\nКак выявлять такие ошибки на стадии компиляции? Ведь сколько ещё мест в движке могут иметь такой-же скрытый \"баг\".\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\nWith OpenXRay some \"actor camera animations\" (*.anm) becomes broken a bit.\r\nThe best example of it is weapon left\\right strafe animation. (It plays when you stop and then start to walk left or right with weapon) - \"\\gamedata\\anims\\camera_effects\\actor_move\\strafe_left.anm\"_ и  _\"\\gamedata\\anims\\camera_effects\\actor_move\\strafe_right.anm\"_\r\n(Video - https://www.dropbox.com/s/0j3yrmsncupcyc1/cam_anim_error.zip?dl=0)\r\n\r\nThe problem was detected in CAnimatorCamLerpEffector::ProcessCam (ActorEffector.h)\r\n\r\n```\r\nclass CAnimatorCamEffector :public CEffectorCam\r\nclass CAnimatorCamLerpEffector :public CAnimatorCamEffector\r\n...\r\nBOOL CAnimatorCamLerpEffector::ProcessCam(SCamEffectorInfo& info)\r\n{\r\n       if(!inherited::inherited::ProcessCam(info))\treturn FALSE;  <<<< THIS CODE FROM ORIG XRay1.6\r\n//     if(!CAnimatorCamEffector::CEffectorCam::ProcessCam(info))\treturn FALSE;\r\n        ....\r\n```\r\nIn **theory** it should call \"CEffectorCam::ProcessCam(info)\" but for some reason it call [only] CAnimatorCamEffector::ProcessCam() instead, which shouldn't be called.\r\n\r\nIf replace it with:\r\n```\r\nBOOL CAnimatorCamLerpEffector::ProcessCam(SCamEffectorInfo& info)\r\n{\r\n     if(!CEffectorCam::ProcessCam(info))\treturn FALSE;\r\n        ....\r\n```\r\nThen all start to work as intended.\r\n\r\nVisual Studio telling me about this eror:\r\n![error](https://cloud.githubusercontent.com/assets/17707013/20232668/f69c8f2c-a87a-11e6-8241-02e6b5c6ed8e.PNG)\r\n**But it still compile project without any error\\warning, which is bad.**\r\n\r\nIs such \"behavior\" related to VS2015 \\ C++11? And how to detect\\prevent all other similar \"errors\"?"},"comment":{"url":"https://api.github.com/repos/OpenXRay/xray-16/issues/comments/260122686","html_url":"https://github.com/OpenXRay/xray-16/issues/148#issuecomment-260122686","issue_url":"https://api.github.com/repos/OpenXRay/xray-16/issues/148","id":260122686,"user":{"login":"ShokerStlk","id":17707013,"avatar_url":"https://avatars.githubusercontent.com/u/17707013?v=3","gravatar_id":"","url":"https://api.github.com/users/ShokerStlk","html_url":"https://github.com/ShokerStlk","followers_url":"https://api.github.com/users/ShokerStlk/followers","following_url":"https://api.github.com/users/ShokerStlk/following{/other_user}","gists_url":"https://api.github.com/users/ShokerStlk/gists{/gist_id}","starred_url":"https://api.github.com/users/ShokerStlk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ShokerStlk/subscriptions","organizations_url":"https://api.github.com/users/ShokerStlk/orgs","repos_url":"https://api.github.com/users/ShokerStlk/repos","events_url":"https://api.github.com/users/ShokerStlk/events{/privacy}","received_events_url":"https://api.github.com/users/ShokerStlk/received_events","type":"User","site_admin":false},"created_at":"2016-11-12T13:38:45Z","updated_at":"2016-11-12T13:38:45Z","body":"Проблема возникает только с if ()\r\nhttp://rextester.com/LVBODH52203 - всё хорошо (**ok**)\r\nhttp://rextester.com/JBGUB72847 - не правильный результат (**wrong**)"}}
{"actor":{"display_login":"ShokerStlk"}}