summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/animation/AnimManager.h2
-rw-r--r--src/control/SceneEdit.cpp2
-rw-r--r--src/core/FileLoader.cpp2
-rw-r--r--src/modelinfo/ClumpModelInfo.cpp27
-rw-r--r--src/modelinfo/PedModelInfo.h3
-rw-r--r--src/modelinfo/SimpleModelInfo.cpp2
-rw-r--r--src/peds/PedIK.cpp11
-rw-r--r--src/rw/VisibilityPlugins.cpp8
8 files changed, 34 insertions, 23 deletions
diff --git a/src/animation/AnimManager.h b/src/animation/AnimManager.h
index d27e4512..de15602c 100644
--- a/src/animation/AnimManager.h
+++ b/src/animation/AnimManager.h
@@ -22,7 +22,7 @@ enum AssocGroupId
ASSOCGRP_BUSYWOMAN,
ASSOCGRP_SEXYWOMAN,
ASSOCGRP_OLDWOMAN,
- ASSOCGRP_FARWOMAN,
+ ASSOCGRP_FATWOMAN,
ASSOCGRP_PANICCHUNKY,
ASSOCGRP_PLAYERBACK,
ASSOCGRP_PLAYERLEFT,
diff --git a/src/control/SceneEdit.cpp b/src/control/SceneEdit.cpp
index c8b4242e..632ec94a 100644
--- a/src/control/SceneEdit.cpp
+++ b/src/control/SceneEdit.cpp
@@ -76,7 +76,7 @@ static int32 NextValidModelId(int32 mi, int32 step)
int32 i = mi;
while (result == -1) {
i += step;
- if (i < 0 || i > 5500) {
+ if (i < 0 || i > MODELINFOSIZE) {
step = -step;
continue;
}
diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp
index adf4b9f8..88afb40c 100644
--- a/src/core/FileLoader.cpp
+++ b/src/core/FileLoader.cpp
@@ -783,7 +783,7 @@ CFileLoader::LoadVehicleObject(const char *line)
mi->SetTexDictionary(txd);
for(p = gamename; *p; p++)
if(*p == '_') *p = ' ';
- strncpy(mi->m_gameName, gamename, 32);
+ strcpy(mi->m_gameName, gamename);
mi->m_level = level;
mi->m_compRules = comprules;
diff --git a/src/modelinfo/ClumpModelInfo.cpp b/src/modelinfo/ClumpModelInfo.cpp
index 44faf3c5..ccfcd304 100644
--- a/src/modelinfo/ClumpModelInfo.cpp
+++ b/src/modelinfo/ClumpModelInfo.cpp
@@ -43,7 +43,7 @@ CClumpModelInfo::CreateInstance(void)
RpClumpForAllAtomics(clone, SetHierarchyForSkinAtomic, hier);
anim = HAnimAnimationCreateForHierarchy(hier);
RpHAnimHierarchySetCurrentAnim(hier, anim);
-// RpHAnimHierarchySetFlags(hier, (RpHAnimHierarchyFlag)(rpHANIMHIERARCHYUPDATEMODELLINGMATRICES|rpHANIMHIERARCHYUPDATELTMS));
+ RpHAnimHierarchySetFlags(hier, (RpHAnimHierarchyFlag)(rpHANIMHIERARCHYUPDATEMODELLINGMATRICES|rpHANIMHIERARCHYUPDATELTMS));
// the rest is xbox only:
// RpSkinGetNumBones(RpSkinGeometryGetSkin(RpAtomicGetGeometry(IsClumpSkinned(clone))));
RpHAnimHierarchyUpdateMatrices(hier);
@@ -113,7 +113,7 @@ CClumpModelInfo::SetClump(RpClump *clump)
weights->w2 /= sum;
weights->w3 /= sum;
}
-// RpHAnimHierarchySetFlags(hier, (RpHAnimHierarchyFlag)(rpHANIMHIERARCHYUPDATEMODELLINGMATRICES|rpHANIMHIERARCHYUPDATELTMS));
+ RpHAnimHierarchySetFlags(hier, (RpHAnimHierarchyFlag)(rpHANIMHIERARCHYUPDATEMODELLINGMATRICES|rpHANIMHIERARCHYUPDATELTMS));
}
#endif
}
@@ -139,13 +139,12 @@ CClumpModelInfo::FindFrameFromIdCB(RwFrame *frame, void *data)
{
RwObjectIdAssociation *assoc = (RwObjectIdAssociation*)data;
- if(CVisibilityPlugins::GetFrameHierarchyId(frame) != assoc->id){
- RwFrameForAllChildren(frame, FindFrameFromIdCB, assoc);
- return assoc->frame ? nil : frame;
- }else{
+ if(CVisibilityPlugins::GetFrameHierarchyId(frame) == assoc->id){
assoc->frame = frame;
return nil;
}
+ RwFrameForAllChildren(frame, FindFrameFromIdCB, assoc);
+ return assoc->frame ? nil : frame;
}
RwFrame*
@@ -153,13 +152,12 @@ CClumpModelInfo::FindFrameFromNameCB(RwFrame *frame, void *data)
{
RwObjectNameAssociation *assoc = (RwObjectNameAssociation*)data;
- if(CGeneral::faststricmp(GetFrameNodeName(frame), assoc->name)){
- RwFrameForAllChildren(frame, FindFrameFromNameCB, assoc);
- return assoc->frame ? nil : frame;
- }else{
+ if(!CGeneral::faststricmp(GetFrameNodeName(frame), assoc->name)){
assoc->frame = frame;
return nil;
}
+ RwFrameForAllChildren(frame, FindFrameFromNameCB, assoc);
+ return assoc->frame ? nil : frame;
}
RwFrame*
@@ -167,14 +165,13 @@ CClumpModelInfo::FindFrameFromNameWithoutIdCB(RwFrame *frame, void *data)
{
RwObjectNameAssociation *assoc = (RwObjectNameAssociation*)data;
- if(CVisibilityPlugins::GetFrameHierarchyId(frame) ||
- CGeneral::faststricmp(GetFrameNodeName(frame), assoc->name)){
- RwFrameForAllChildren(frame, FindFrameFromNameWithoutIdCB, assoc);
- return assoc->frame ? nil : frame;
- }else{
+ if(CVisibilityPlugins::GetFrameHierarchyId(frame) == 0 &&
+ !CGeneral::faststricmp(GetFrameNodeName(frame), assoc->name)){
assoc->frame = frame;
return nil;
}
+ RwFrameForAllChildren(frame, FindFrameFromNameWithoutIdCB, assoc);
+ return assoc->frame ? nil : frame;
}
RwFrame*
diff --git a/src/modelinfo/PedModelInfo.h b/src/modelinfo/PedModelInfo.h
index a2bfd122..75f43be3 100644
--- a/src/modelinfo/PedModelInfo.h
+++ b/src/modelinfo/PedModelInfo.h
@@ -36,7 +36,8 @@ public:
static RwObjectNameIdAssocation m_pPedIds[PED_NODE_MAX];
- CPedModelInfo(void) : CClumpModelInfo(MITYPE_PED) { }
+ CPedModelInfo(void) : CClumpModelInfo(MITYPE_PED) { m_hitColModel = nil; }
+ ~CPedModelInfo(void) { delete m_hitColModel; }
void DeleteRwObject(void);
void SetClump(RpClump *);
diff --git a/src/modelinfo/SimpleModelInfo.cpp b/src/modelinfo/SimpleModelInfo.cpp
index 36e98e18..a781cf58 100644
--- a/src/modelinfo/SimpleModelInfo.cpp
+++ b/src/modelinfo/SimpleModelInfo.cpp
@@ -150,7 +150,7 @@ void
CSimpleModelInfo::SetupBigBuilding(void)
{
CSimpleModelInfo *related;
- if(m_lodDistances[0] > LOD_DISTANCE && m_atomics[2] == nil){
+ if(m_lodDistances[0] > LOD_DISTANCE && GetRelatedModel() == nil){
m_isBigBuilding = 1;
FindRelatedModel();
related = GetRelatedModel();
diff --git a/src/peds/PedIK.cpp b/src/peds/PedIK.cpp
index 3db3dc0f..c9428cb3 100644
--- a/src/peds/PedIK.cpp
+++ b/src/peds/PedIK.cpp
@@ -33,13 +33,18 @@ CPedIK::CPedIK(CPed *ped)
#ifdef PED_SKIN
inline RwMatrix*
-GetComponentMatrix(CPed *ped, int32 node)
+GetBoneMatrix(CPed *ped, int32 bone)
{
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(ped->GetClump());
- int idx = RpHAnimIDGetIndex(hier, ped->m_pFrames[node]->nodeID);
+ int idx = RpHAnimIDGetIndex(hier, bone);
RwMatrix *mats = RpHAnimHierarchyGetMatrixArray(hier);
return &mats[idx];
}
+inline RwMatrix*
+GetComponentMatrix(CPed *ped, int32 node)
+{
+ return GetBoneMatrix(ped, ped->m_pFrames[node]->nodeID);
+}
#endif
void
@@ -245,7 +250,7 @@ CPedIK::LookInDirection(float phi, float theta)
}
// parent of head is torso
- RwMatrix worldMat = *GetComponentMatrix(m_ped, BONE_torso);
+ RwMatrix worldMat = *GetBoneMatrix(m_ped, BONE_torso);
ExtractYawAndPitchWorld(&worldMat, &yaw, &pitch);
LimbMoveStatus headStatus = MoveLimb(m_headOrient, CGeneral::LimitRadianAngle(phi - yaw),
diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp
index b1a101e3..5184860b 100644
--- a/src/rw/VisibilityPlugins.cpp
+++ b/src/rw/VisibilityPlugins.cpp
@@ -147,7 +147,11 @@ CVisibilityPlugins::RenderFadingEntities(void)
if(e->m_rwObject == nil)
continue;
mi = (CSimpleModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex());
+#ifdef FIX_BUGS
+ if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite)
+#else
if(mi->m_noZwrite)
+#endif
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
if(e->bDistanceFade){
@@ -159,7 +163,11 @@ CVisibilityPlugins::RenderFadingEntities(void)
}else
CRenderer::RenderOneNonRoad(e);
+#ifdef FIX_BUGS
+ if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite)
+#else
if(mi->m_noZwrite)
+#endif
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
}
}