few fixes

This commit is contained in:
aap 2020-05-11 09:18:41 +02:00
parent c66c45f4c8
commit b11715608f
5 changed files with 53 additions and 11 deletions

View file

@ -47,7 +47,12 @@ FrameUpdateCallBackNonSkinned(AnimBlendFrameData *frame, void *arg)
(*node)->Update(vec, q, 1.0f-totalBlendAmount); (*node)->Update(vec, q, 1.0f-totalBlendAmount);
if((*node)->sequence->HasTranslation()) if((*node)->sequence->HasTranslation())
pos += vec; pos += vec;
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
} }
++*node; ++*node;
} }
@ -101,7 +106,12 @@ FrameUpdateCallBackWithVelocityExtractionNonSkinned(AnimBlendFrameData *frame, v
for(node = updateData->nodes; *node; node++){ for(node = updateData->nodes; *node; node++){
if((*node)->sequence){ if((*node)->sequence){
bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount); bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount);
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
if((*node)->sequence->HasTranslation()){ if((*node)->sequence->HasTranslation()){
pos += vec; pos += vec;
if((*node)->association->HasTranslation()){ if((*node)->association->HasTranslation()){
@ -179,7 +189,12 @@ FrameUpdateCallBackWith3dVelocityExtractionNonSkinned(AnimBlendFrameData *frame,
for(node = updateData->nodes; *node; node++){ for(node = updateData->nodes; *node; node++){
if((*node)->sequence){ if((*node)->sequence){
bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount); bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount);
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
if((*node)->sequence->HasTranslation()){ if((*node)->sequence->HasTranslation()){
pos += vec; pos += vec;
if((*node)->association->HasTranslation()){ if((*node)->association->HasTranslation()){
@ -243,7 +258,12 @@ FrameUpdateCallBackSkinned(AnimBlendFrameData *frame, void *arg)
(*node)->Update(vec, q, 1.0f-totalBlendAmount); (*node)->Update(vec, q, 1.0f-totalBlendAmount);
if((*node)->sequence->HasTranslation()) if((*node)->sequence->HasTranslation())
pos += vec; pos += vec;
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
} }
++*node; ++*node;
} }
@ -298,7 +318,12 @@ FrameUpdateCallBackWithVelocityExtractionSkinned(AnimBlendFrameData *frame, void
for(node = updateData->nodes; *node; node++){ for(node = updateData->nodes; *node; node++){
if((*node)->sequence){ if((*node)->sequence){
bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount); bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount);
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
if((*node)->sequence->HasTranslation()){ if((*node)->sequence->HasTranslation()){
pos += vec; pos += vec;
if((*node)->association->HasTranslation()){ if((*node)->association->HasTranslation()){
@ -376,7 +401,12 @@ FrameUpdateCallBackWith3dVelocityExtractionSkinned(AnimBlendFrameData *frame, vo
for(node = updateData->nodes; *node; node++){ for(node = updateData->nodes; *node; node++){
if((*node)->sequence){ if((*node)->sequence){
bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount); bool nodelooped = (*node)->Update(vec, q, 1.0f-totalBlendAmount);
rot += q; #ifdef FIX_BUGS
if(DotProduct(rot, q) < 0.0f)
rot -= q;
else
#endif
rot += q;
if((*node)->sequence->HasTranslation()){ if((*node)->sequence->HasTranslation()){
pos += vec; pos += vec;
if((*node)->association->HasTranslation()){ if((*node)->association->HasTranslation()){

View file

@ -348,9 +348,11 @@ CAnimBlendAssociation*
RpAnimBlendClumpGetFirstAssociation(RpClump *clump) RpAnimBlendClumpGetFirstAssociation(RpClump *clump)
{ {
CAnimBlendClumpData *clumpData = *RPANIMBLENDCLUMPDATA(clump); CAnimBlendClumpData *clumpData = *RPANIMBLENDCLUMPDATA(clump);
if(clumpData == nil) return nil; if(!RpAnimBlendClumpIsInitialized(clump))
if(clumpData->link.next == nil) return nil; return nil;
return CAnimBlendAssociation::FromLink(clumpData->link.next); if(clumpData->link.next)
return CAnimBlendAssociation::FromLink(clumpData->link.next);
return nil;
} }
// FillFrameArrayCallBack on PS2 // FillFrameArrayCallBack on PS2

View file

@ -4540,6 +4540,9 @@ CCam::Process_FollowPed_Rotation(const CVector &CameraTarget, float TargetOrient
} }
if(TheCamera.m_bUseTransitionBeta)
Beta = CGeneral::GetATanOfXY(-Cos(m_fTransitionBeta), -Sin(m_fTransitionBeta));
Front = CVector(Cos(Alpha) * Cos(Beta), Cos(Alpha) * Sin(Beta), Sin(Alpha)); Front = CVector(Cos(Alpha) * Cos(Beta), Cos(Alpha) * Sin(Beta), Sin(Alpha));
Source = TargetCoors - Front*CamDist; Source = TargetCoors - Front*CamDist;
TargetCoors.z -= BaseOffset; // now get back to the real target coors again TargetCoors.z -= BaseOffset; // now get back to the real target coors again

View file

@ -111,8 +111,8 @@ RwObjectNameIdAssocation heliIds[] = {
}; };
RwObjectNameIdAssocation planeIds[] = { RwObjectNameIdAssocation planeIds[] = {
{ "wheel_front_dummy", 2, 0 }, { "wheel_front_dummy", PLANE_WHEEL_FRONT, 0 },
{ "wheel_rear_dummy", 3, 0 }, { "wheel_rear_dummy", PLANE_WHEEL_READ, 0 },
{ "light_tailplane", PLANE_POS_LIGHT_TAIL, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID }, { "light_tailplane", PLANE_POS_LIGHT_TAIL, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
{ "light_left", PLANE_POS_LIGHT_LEFT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID }, { "light_left", PLANE_POS_LIGHT_LEFT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },
{ "light_right", PLANE_POS_LIGHT_RIGHT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID }, { "light_right", PLANE_POS_LIGHT_RIGHT, VEHICLE_FLAG_POS | CLUMP_FLAG_NO_HIERID },

View file

@ -2,6 +2,13 @@
#include "Vehicle.h" #include "Vehicle.h"
enum ePlaneNodes
{
PLANE_WHEEL_FRONT = 2,
PLANE_WHEEL_READ,
NUM_PLANE_NODES
};
enum ePlanePositions enum ePlanePositions
{ {
PLANE_POS_LIGHT_LEFT, PLANE_POS_LIGHT_LEFT,