BGE: Adding a Max Jumps value to the character physic window
Actually we only have a Python API that allows to change the max jumps value. The patch also allows non programmers to change the maximum numbers of jumps. Reviewers: panzergame, sybren, campbellbarton, lordloki, moguri, agoose77 Reviewed By: lordloki, moguri Projects: #game_engine Differential Revision: https://developer.blender.org/D1302
This commit is contained in:
parent
88005475db
commit
3dd83b533a
|
@ -55,6 +55,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
|
|||
layout.prop(game, "step_height", slider=True)
|
||||
layout.prop(game, "jump_speed")
|
||||
layout.prop(game, "fall_speed")
|
||||
layout.prop(game, "max_jumps")
|
||||
|
||||
elif physics_type in {'DYNAMIC', 'RIGID_BODY'}:
|
||||
split = layout.split()
|
||||
|
|
|
@ -1041,6 +1041,7 @@ Object *BKE_object_add_only_object(Main *bmain, int type, const char *name)
|
|||
ob->step_height = 0.15f;
|
||||
ob->jump_speed = 10.0f;
|
||||
ob->fall_speed = 55.0f;
|
||||
ob->max_jumps = 1;
|
||||
ob->col_group = 0x01;
|
||||
ob->col_mask = 0xffff;
|
||||
ob->preview = NULL;
|
||||
|
|
|
@ -189,7 +189,7 @@ typedef struct Object {
|
|||
|
||||
/* did last modifier stack generation need mapping support? */
|
||||
char lastNeedMapping; /* bool */
|
||||
char pad[5];
|
||||
char pad;
|
||||
|
||||
/* dupli-frame settings */
|
||||
int dupon, dupoff, dupsta, dupend;
|
||||
|
@ -222,6 +222,8 @@ typedef struct Object {
|
|||
float step_height;
|
||||
float jump_speed;
|
||||
float fall_speed;
|
||||
unsigned char max_jumps;
|
||||
char pad2[3];
|
||||
|
||||
/** Collision mask settings */
|
||||
unsigned short col_group, col_mask;
|
||||
|
|
|
@ -1771,6 +1771,14 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
|
|||
RNA_def_property_float_default(prop, 55.0f);
|
||||
RNA_def_property_ui_text(prop, "Fall Speed Max", "Maximum speed at which the character will fall");
|
||||
|
||||
prop = RNA_def_property(srna, "max_jumps", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "max_jumps");
|
||||
RNA_def_property_range(prop, 1, CHAR_MAX);
|
||||
RNA_def_property_ui_range(prop, 1, 10, 1, 1);
|
||||
RNA_def_property_int_default(prop, 1);
|
||||
RNA_def_property_ui_text(prop, "Max Jumps",
|
||||
"The maximum number of jumps the character can make before it hits the ground.");
|
||||
|
||||
/* Collision Masks */
|
||||
prop = RNA_def_property(srna, "collision_group", PROP_BOOLEAN, PROP_LAYER_MEMBER);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "col_group", 1);
|
||||
|
|
|
@ -1215,7 +1215,8 @@ static PHY_ShapeProps *CreateShapePropsFromBlenderObject(struct Object* blendero
|
|||
shapeProps->m_step_height = blenderobject->step_height;
|
||||
shapeProps->m_jump_speed = blenderobject->jump_speed;
|
||||
shapeProps->m_fall_speed = blenderobject->fall_speed;
|
||||
|
||||
shapeProps->m_max_jumps = blenderobject->max_jumps;
|
||||
|
||||
return shapeProps;
|
||||
}
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ int KX_CharacterWrapper::pyattr_set_max_jumps(void *self_v, const KX_PYATTRIBUTE
|
|||
|
||||
CLAMP(param, 0, 255);
|
||||
|
||||
self->m_character->SetMaxJumps((unsigned char)param);
|
||||
self->m_character->SetMaxJumps(param);
|
||||
return PY_SET_ATTR_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -533,6 +533,7 @@ bool CcdPhysicsController::CreateCharacterController()
|
|||
|
||||
m_characterController->setJumpSpeed(m_cci.m_jumpSpeed);
|
||||
m_characterController->setFallSpeed(m_cci.m_fallSpeed);
|
||||
m_characterController->setMaxJumps(m_cci.m_maxJumps);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -316,7 +316,8 @@ struct CcdConstructionInfo
|
|||
float m_stepHeight;
|
||||
float m_jumpSpeed;
|
||||
float m_fallSpeed;
|
||||
|
||||
unsigned char m_maxJumps;
|
||||
|
||||
int m_gamesoftFlag;
|
||||
float m_soft_linStiff; /* linear stiffness 0..1 */
|
||||
float m_soft_angStiff; /* angular stiffness 0..1 */
|
||||
|
|
|
@ -3162,6 +3162,7 @@ void CcdPhysicsEnvironment::ConvertObject(KX_GameObject *gameobj, RAS_MeshObject
|
|||
ci.m_stepHeight = isbulletchar ? shapeprops->m_step_height : 0.f;
|
||||
ci.m_jumpSpeed = isbulletchar ? shapeprops->m_jump_speed : 0.f;
|
||||
ci.m_fallSpeed = isbulletchar ? shapeprops->m_fall_speed : 0.f;
|
||||
ci.m_maxJumps = isbulletchar ? shapeprops->m_max_jumps : 0;
|
||||
|
||||
//mmm, for now, take this for the size of the dynamicobject
|
||||
// Blender uses inertia for radius of dynamic object
|
||||
|
|
|
@ -51,6 +51,7 @@ struct PHY_ShapeProps {
|
|||
MT_Scalar m_step_height; // Max height of climbable steps (Character)
|
||||
MT_Scalar m_jump_speed; // Velocity of jumps (Character)
|
||||
MT_Scalar m_fall_speed; // Max velocity of falling (Character)
|
||||
unsigned char m_max_jumps; // Max ammount of jumps (Character)
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue