Jump to content
eggbeast

my Reload anim plays backwards - any suggestions?

Recommended Posts

ok so i have imported the BI Lee Enfield rifle, and animated it to chamber a round after each bolt is actioned.

in buldozer with "reload" animating from 0 to 1, it plays perfectly - see vid

 

 

the trigger is pulled at 0.1-0.2 then the bolt is pulled back til about 0.5, then a round springs into view, and is chambered as the bolt goes forward.

 

however in game, it plays completely backwards! i was quite surprised by this as all my other reload animations work ok on other weapons.

 

any suggestions?

- do i need to reverse the animation? if so, is there an easy way to do it e.g. using phase values, rather than recreating each animation and changing direction and time?

or is something else at play here?

 

seems really weird that it plays backwards in game.

 

model.cfg is here

class CfgSkeletons
{
	class Default
	{
		isDiscrete=1;
		skeletonInherit="";
		skeletonBones[]={};
	};
	class uns_leeenfield_skel: Default
	{
		skeletonInherit="Default";
		skeletonBones[]=
		{
			"charging_handle","",
			"mount", "",
			"zasleh", "",
			"trigger", "",
			"bolt", "",
			"Magazine",	"",
			"Bullettop", "Magazine",
			"Bullets", "Magazine",
			"clip_fixed", "Magazine",
			"dummyclip", "Magazine",
			"dummyrounds","dummyclip"
		};
	};
};

class CfgModels
{
	class Default
	{
		sectionsInherit="";
		sections[]={};
		skeletonName="Default";
	};
	class uns_leeenfield: Default
	{
		skeletonName="uns_leeenfield_skel";
		sectionsInherit="Default";
		sections[]=
		{
			"trigger","zasleh","mount",
			"magazine",
			"bullettop","bullets","clip",
			"dummyrounds","dummyclip",
			"bolt",	"charging_handle"
		};
 		class Animations
		{
			class mount_hide
			{
				type="hide";
				source="hasOptics";
				selection="mount";
				animPeriod=0;
				minValue=0;
				maxValue=1;
				minPhase=0;
				maxPhase=1;
				hideValue=0;
				unhideValue=0.1;
				sourceAddress="mirror";
			};
//bullets
//hide bullets during firing?
			class bullets_hide
            {
                type="hide";
                source="revolving";
                minValue = 0.0;
                maxvalue = 1;
                selection="bullets";
                unhideValue = 0.4;
                hideValue = 0.00;
            };
            class bullettop_hide: bullets_hide
            {
                selection="bullettop";
                unhideValue = 0.2;
            };
//chamber round
			class bullettop_reload_lift
            {
                type = "translation";
                source = "reload";
                selection = "bullettop";
				memory=1;
				axis = "bulletlift_axis";
                minValue = 0.52;
                maxValue = 0.6;
                offset0 = 1;
                offset1 = 0;
				minPhase=1;
				maxPhase=0;
            };
            class bullettop_reload_lift_reset: bullettop_reload_lift
            {
                minValue = 0.01;
                maxValue = 0.02;
                offset0 = -1;
                offset1 = 0;
            };
            class bullettop_reload_translate
            {
                type = "translation";
                source = "reload";
                selection = "bullettop";
				memory=1;
				axis = "bolt_axis";
                minValue = 0.7;
                maxValue = 0.8;
                offset0 = 0;
                offset1 = -1;
            };
            class bullettop_reload_translate_reset: bullettop_reload_translate
            {
				axis = "bolt_axis";
                minValue = 0.01;
                maxValue = 0.02;
                offset0 = -1;
                offset1 = 0;
            };

//hide mag on reload mag
			class bullets_hide_reload
            {
                type="hide";
                source = "reloadmagazine";
                selection="bullets";
                minValue = 0.0;
                maxvalue = 1;
                hideValue =0.0001;
                unhideValue =0.5625;
            };
			class bullettop_hide_reload: bullets_hide_reload
            {
                selection="bullettop";
                unhideValue =0.57;
            };
//hide dummyclip on reload mag
			class dummyclip_hide_reload1
            {
                type="hide";
                source = "reloadmagazine";
                selection="dummyclip";
                minValue = 0.0;
                maxvalue = 1;
                hideValue =0.000;
                unhideValue =0.4125;
            };
			class dummyclip_hide_reload2
            {
                type="hide";
                source = "reloadmagazine";
                selection="dummyclip";
                minValue = 0.0;
                maxvalue = 1;
                hideValue =0.737;
            };
            class dummyclipinsert_trans1
            {
                type = "translation";
                source = "reloadmagazine";
                selection = "dummyclip";
				memory=1;
				axis = "stripper_inout_axis";
                minValue = 0.0;
                maxvalue = 0.01;
                offset0 = "0";
                offset1 = 1;
            };
            class dummyclipinsert_trans2: dummyclipinsert_trans1
            {
                minValue = 0.4125;
                maxvalue = 0.4375;
                offset0 = "0";
                offset1 = -1;
            };
            class dummyclipinsert_trans3: dummyclipinsert_trans1
            {
                minValue = 0.728;
                maxvalue = 0.735;
            };
//move dummyrounds into mag
            class dummyroundsin_trans
            {
                type = "translation";
                source = "reloadmagazine";
                selection = "dummyrounds";
				memory=1;
				axis = "dummyrounds_axis";
                minValue = 0.5;
                maxvalue = 0.5625;
                offset0 = "0";
                offset1 = 1;
            };
			class dummyrounds_hide 
			{
				type = "hide";
                source = "reloadmagazine";
                selection = "dummyrounds";
				hideValue = 0.5625;
			};
/*
			class magazine_hide
			{
				type="hide";
				source="reloadMagazine";
				sourceAddress="mirror";
				selection="magazine";
				minValue=0.0;
				maxValue=0.4;//causes loop?
				hideValue=0.5;
			};
*/
			class unloaded_magazine_hide 
			{
				type = "hide";
				source = "hasMagazine";
				selection = "Magazine";
				hideValue = 0.1;
			};
//bolt reload mag
			class bolt_reload_mag_begin
			{
				type="translation";
				source="reloadMagazine";
				selection="bolt";
				axis="bolt_axis";
				memory=1;
				minValue=0.2;
				maxValue=0.5;
				offset0=0;
				offset1=1.0;
			};
			class bolt_reload_mag_end:bolt_reload_mag_begin
			{
				minValue=0.7;
				maxValue=0.8;
				offset0=0;
				offset1=-1.0;
			};
			class charging_handle_reload_mag_rotation_begin
			{
				type="rotation";
				source="reloadMagazine";
				selection="charging_handle";
				axis="bolt_axis";
				memory=1;
				minValue=0.0;
				maxValue=0.2;
				angle0=0;
				angle1=-1.0;
			};
			class charging_handle_reload_mag_rotation_end:charging_handle_reload_mag_rotation_begin
			{
				minValue=0.8;
				maxValue=1.0;
				angle0=0;
				angle1=1.0;
			};
			class charging_handle_reload_mag_begin
			{
				type="translation";
				source="reloadMagazine";
				selection="charging_handle";
				axis="bolt_axis";
				memory=1;
				minValue=0.2;
				maxValue=0.5;
				offset0=0;
				offset1=1.0;
			};
			class charging_handle_reload_mag_end:charging_handle_reload_mag_begin
			{
				minValue=0.7;
				maxValue=0.8;
				offset0=0;
				offset1=-1.0;
			};
//firing bolt
			class bolt_reload_begin
			{
				type="translation";
				source="reload";
				selection="bolt";
				axis="bolt_axis";
				memory=1;
				minValue=0.2;
				maxValue=0.5;
				offset0=0;
				offset1=1;
			};
			class bolt_reload_end:bolt_reload_begin
			{
				minValue=0.7;
				maxValue=0.8;
				offset0=0;
				offset1=-1;
			};
			class charging_handle_reload_rotation_begin
			{
				type="rotation";
				source="reload";
				selection="charging_handle";
				axis="bolt_axis";
				memory=1;
				minValue=0.0;
				maxValue=0.2;
				angle0=0;
				angle1=-1.0;
			};
			class charging_handle_reload_rotation_end:charging_handle_reload_rotation_begin
			{
				minValue=0.8;
				maxValue=1.0;
				angle0=0;
				angle1=1.0;
			};
			class charging_handle_reload_begin
			{
				type="translation";
				source="reload";
				selection="charging_handle";
				axis="bolt_axis";
				memory=1;
				minValue=0.2;
				maxValue=0.5;
				offset0=0;
				offset1=1.0;
			};
			class charging_handle_reload_end:charging_handle_reload_begin
			{
				minValue=0.7;
				maxValue=0.8;
				offset0=0;
				offset1=-1.0;
			};
//firing other
			class trigger
			{
				type="rotationZ";
				source="reload";
				selection="trigger";
				axis="trigger_axis";
				minValue="0";
				maxValue="0.1";
				angle0="0";
				angle1="rad -10";
			};
			class trigger_back: trigger
			{
				minValue="0.1";
				maxValue="0.2";
				angle1="rad 10";
			};
 			class MuzzleFlashROT
 			{
 				type="rotationX";
 				source="ammoRandom";
 				sourceAddress="loop";
 				selection="zasleh"; 
 				axis="barrel_axis"; 
 				centerFirstVertex=true;
 				minValue=0;
 				maxValue=4;
 				angle0="rad 0";
 				angle1="rad 360";
 			};			
		};
	};
};

Share this post


Link to post
Share on other sites

wow i never noticed this fact when doing anims for literally a hundred weapons lol

boy oh boy, this stuff is hard enough to do, without having to think backwards.

thanks!

btw do you guys have a shotgun hand pump animation solution that doesn't use CBA, and would you possibly share the secret?

Share this post


Link to post
Share on other sites
btw do you guys have a shotgun hand pump animation solution that doesn't use CBA, and would you possibly share the secret?

best to wait for 1.66 and weapon event handlers ;) (already available on devbranch)

class rhs_weap_ak74m_Base_F: Rifle_Base_F
{
class Eventhandlers
{
fired = "hint format['2 f: %1', _this]";
};

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×