mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[7496] Fxied problems with visual GO orientation for some angles. Optimize related code.
This commit is contained in:
parent
e6aca46942
commit
ae104fea27
2 changed files with 8 additions and 7 deletions
|
|
@ -1303,20 +1303,21 @@ const char* GameObject::GetNameForLocaleIdx(int32 loc_idx) const
|
|||
|
||||
void GameObject::UpdateRotationFields(float rotation2 /*=0.0f*/, float rotation3 /*=0.0f*/)
|
||||
{
|
||||
static double const atan_pow = atan(pow(2.0f, -20.0f));
|
||||
|
||||
SetFloatValue(GAMEOBJECT_FACING, GetOrientation());
|
||||
|
||||
int64 rotation = 0;
|
||||
|
||||
double f_rot1 = sin(GetOrientation() / 2.0f);
|
||||
int64 i_rot1 = int64(f_rot1 / atan(pow(2.0f, -20.0f)));
|
||||
rotation |= (i_rot1 << 43 >> 43) & 0x00000000001FFFFF;
|
||||
double f_rot2 = cos(GetOrientation() / 2.0f);
|
||||
|
||||
int64 i_rot1 = int64(f_rot1 / atan_pow *(f_rot2 >= 0 ? 1.0f : -1.0f));
|
||||
int64 rotation = (i_rot1 << 43 >> 43) & 0x00000000001FFFFF;
|
||||
SetUInt64Value(GAMEOBJECT_ROTATION, rotation);
|
||||
|
||||
if(rotation2==0.0f && rotation3==0.0f)
|
||||
{
|
||||
rotation2 = sin(GetOrientation()/2);
|
||||
rotation3 = cos(GetOrientation()/2);
|
||||
rotation2 = f_rot1;
|
||||
rotation3 = f_rot2;
|
||||
}
|
||||
|
||||
SetFloatValue(GAMEOBJECT_PARENTROTATION+2, rotation2);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "7495"
|
||||
#define REVISION_NR "7496"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue