Jump to content
ROTAHOE

Unable to get wheels to turn on model (Updated)

Recommended Posts

 

 

And here is my config.cpp

#include "basicdefines_A3.hpp"
class DefaultEventhandlers;

#include "CfgPatches.hpp"

class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;

class CfgVehicles
{
	class Car;
	class Car_F: Car
	{
		class HitPoints /// we want to use hitpoints predefined for all cars
		{
            class HitEngine;
			class HitGlass1;			
		};
		class EventHandlers;
		class CargoTurret;
	};

	class WWM_SnowDoo: Car_F
	{
		cargoProxyIndexes[] = {1};
		driverCompartments = "Compartment1";
		cargoCompartments[] = {"Compartment2"};
		class Turrets
		{
			class CargoTurret_01: CargoTurret
			{
				gunnerGetInAction = "GetInLOW";
				gunnerGetOutAction = "GetOutLOW";
				gunnerAction = "passenger_inside_1";
				gunnerCompartments = "Compartment2";
				memoryPointsGetInGunner = "pos cargo";
				memoryPointsGetInGunnerDir = "pos cargo dir";
				gunnerName = "Gunner (Passenger)";
				proxyIndex = 1;
				initElev = 0;
				maxElev = 15;
				minElev = -5;
				initTurn = 0;
				maxTurn = 360;
				minTurn = 0;
				isPersonTurret = 1;
				ejectDeadGunner = 1;
			};
		};
		
		author = "BlackOps & Duck";
		model 	= "\WWM_SnowDoo\objects\SkiDoo.p3d";  
		picture	= "\A3\Weapons_F\Data\placeholder_co.paa"; 
		Icon	= "\A3\Weapons_F\Data\placeholder_co.paa";

		displayName = "Skidoo"; /// displayed in Editor

		hiddenSelections[] = {"camo1"}; ///we want to allow changing the color of this selection

		terrainCoef 	= 0; 	/// different surface affects this car more, stick to tarmac
		turnCoef 		= 2.5; 	/// should match the wheel turn radius
		precision 		= 10; 	/// how much freedom has the AI for its internal waypoints - lower number means more precise but slower approach to way
		brakeDistance 	= 3.0; 	/// how many internal waypoints should the AI plan braking in advance
		acceleration 	= 15; 	/// how fast acceleration does the AI think the car has

		fireResistance 	= 5; 	/// lesser protection against fire than tanks
		armor 			= 32; 	/// just some protection against missiles, collisions and explosions
		cost			= 50000; /// how likely is the enemy going to target this vehicle

		transportMaxBackpacks 	= 3; /// just some backpacks fit the trunk by default
		transportSoldier 		= 1; /// number of cargo except driver

		/// some values from parent class to show how to set them up
		wheelDamageRadiusCoef 	= 0.9; 			/// for precision tweaking of damaged wheel size
		wheelDestroyRadiusCoef 	= 0.4;			/// for tweaking of rims size to fit ground
		maxFordingDepth 		= 0.5;			/// how high water would damage the engine of the car
		waterResistance 		= 1;			/// if the depth of water is bigger than maxFordingDepth it starts to damage the engine after this time
		crewCrashProtection		= 0.25;			/// multiplier of damage to crew of the vehicle => low number means better protection
		driverLeftHandAnimName 	= "drivewheel"; /// according to what bone in model of car does hand move
		driverRightHandAnimName = "drivewheel";	/// beware, non-existent bones may cause game crashes (even if the bones are hidden during play)

		class TransportItems /// some first aid kits in trunk according to safety regulations
		{
			item_xx(FirstAidKit,1);
		};

		class HitPoints: HitPoints
		{
			class HitEngine 		{armor=0.50; material=-1; name="engine"; visual=""; passThrough=0.2;};
			class HitGlass1: HitGlass1 {armor=0.25;}; /// it is pretty easy to puncture the glass but not so easy to remove it
		};

		driverAction = "driver_quadbike";
		getInAction = "GetInQuadbike";
		getOutAction = "GetOutLow";
		//cargoAction[] = {"passenger_quadbike"};
		//cargoGetInAction[] = {"GetInQuadbike_cargo"};
		//cargoGetOutAction[] = {"GetOutLow"};

		#include "sounds.hpp"	/// sounds are in a separate file to make this one simple
		#include "physx.hpp"	/// PhysX settings are in a separate file to make this one simple

		class PlayerSteeringCoefficients /// steering sensitivity configuration
		{
			 turnIncreaseConst 	= 0.3; // basic sensitivity value, higher value = faster steering
			 turnIncreaseLinear = 1.0; // higher value means less sensitive steering in higher speed, more sensitive in lower speeds
			 turnIncreaseTime 	= 1.0; // higher value means smoother steering around the center and more sensitive when the actual steering angle gets closer to the max. steering angle

			 turnDecreaseConst 	= 5.0; // basic caster effect value, higher value = the faster the wheels align in the direction of travel
			 turnDecreaseLinear = 3.0; // higher value means faster wheel re-centering in higher speed, slower in lower speeds
			 turnDecreaseTime 	= 0.0; // higher value means stronger caster effect at the max. steering angle and weaker once the wheels are closer to centered position

			 maxTurnHundred 	= 0.7; // coefficient of the maximum turning angle @ 100km/h; limit goes linearly to the default max. turn. angle @ 0km/h
		};

		/// memory points where do tracks of the wheel appear
		// front left track, left offset
		memoryPointTrackFLL = "TrackFLL";
		// front left track, right offset
		memoryPointTrackFLR = "TrackFLR";
		// back left track, left offset
		memoryPointTrackBLL = "TrackBLL";
		// back left track, right offset
		memoryPointTrackBLR = "TrackBLR";
		// front right track, left offset
		memoryPointTrackFRL = "TrackFRL";
		// front right track, right offset
		memoryPointTrackFRR = "TrackFRR";
		// back right track, left offset
		memoryPointTrackBRL = "TrackBRL";
		// back right track, right offset
		memoryPointTrackBRR = "TrackBRR";
		
		
		class Damage /// damage changes material in specific places (visual in hitPoint)
		{
			tex[]={};
			mat[]=
			{
				"A3\data_f\glass_veh_int.rvmat", 		/// material mapped in model
				"A3\data_f\Glass_veh_damage.rvmat", 	/// changes to this one once damage of the part reaches 0.5
				"A3\data_f\Glass_veh_damage.rvmat",		/// changes to this one once damage of the part reaches 1

				"A3\data_f\glass_veh.rvmat",			/// another material
				"A3\data_f\Glass_veh_damage.rvmat",		/// changes into different ones
				"A3\data_f\Glass_veh_damage.rvmat"
			};
		};

		class Exhausts /// specific exhaust effects for the car
		{
			class Exhaust1 /// the car has two exhausts - each on one side
			{
				position 	= "exhaust";  		/// name of initial memory point
				direction 	= "exhaust_dir";	/// name of memory point for exhaust direction
				effect 		= "ExhaustsEffect";	/// what particle effect is it going to use
			};			
		};

		class Reflectors	/// only front lights are considered to be reflectors to save CPU
		{
			class LightCarHeadL01 	/// lights on each side consist of two bulbs with different flares
			{
				color[] 		= {1900, 1800, 1700};		/// approximate colour of standard lights
				ambient[]		= {5, 5, 5};				/// nearly a white one
				position 		= "LightCarHeadL01";		/// memory point for start of the light and flare
				direction 		= "LightCarHeadL01_end";	/// memory point for the light direction
				hitpoint 		= "Light_L";				/// point(s) in hitpoint lod for the light (hitPoints are created by engine)
				selection 		= "Light_L";				/// selection for artificial glow around the bulb, not much used any more
				size 			= 1;						/// size of the light point seen from distance
				innerAngle 		= 100;						/// angle of full light
				outerAngle 		= 179;						/// angle of some light
				coneFadeCoef 	= 10;						/// attenuation of light between the above angles
				intensity 		= 1;						/// strength of the light
				useFlare 		= true;						/// does the light use flare?
				dayLight 		= false;					/// switching light off during day saves CPU a lot
				flareSize 		= 1.0;						/// how big is the flare

				class Attenuation
				{
					start 			= 1.0;
					constant 		= 0;
					linear 			= 0;
					quadratic 		= 0.25;
					hardLimitStart 	= 30;		/// it is good to have some limit otherwise the light would shine to infinite distance
					hardLimitEnd 	= 60;		/// this allows adding more lights into scene
				};
			};

			class LightCarHeadL02: LightCarHeadL01
			{
				position 	= "LightCarHeadL02";
				direction 	= "LightCarHeadL02_end";
				FlareSize 	= 0.5;						/// side bulbs aren't that strong
			};

			class LightCarHeadR01: LightCarHeadL01
			{
				position 	= "LightCarHeadR01";
				direction 	= "LightCarHeadR01_end";
				hitpoint 	= "Light_R";
				selection 	= "Light_R";
			};

			class LightCarHeadR02: LightCarHeadR01
			{
				position 	= "LightCarHeadR02";
				direction 	= "LightCarHeadR02_end";
				FlareSize 	= 0.5;
			};
		};
		
		aggregateReflectors[] = {{"LightCarHeadL01", "LightCarHeadL02"}, {"LightCarHeadR01", "LightCarHeadR02"}};
		
		class EventHandlers {};
		class textureSources {};
		
		
	};
	
	class cfgSkeletons
    {
	    class WWM_SnowDoo_Skeleton
	    {
		    isDiscrete=1;

		    skeletonInherit="";
		    skeletonBones[]=
		    {
			  "drivewheel","",
			  "wheelL","wheelR"
		    };
	    };
    };
    class cfgModels
    {
	    class WWM_SnowDoo
	    {
		    sectionsInherit="";
		    sections[]=
		    {
			   "drivewheel","",
			   "wheelL","wheelR"
		    };

		    skeletonName="WWM_SnowDoo_Skeleton";

		    class Animations
		    {
				class DriveWheel
			{
				type="rotationY";
				source="drivingWheel";
				selection="drivewheel";
				axis="drivewheel_axis";
				memory=1;
				minValue="rad -90";
				maxValue="rad +90";
				angle0=1.047198;
				angle1=-1.047198;
			};
			    class wheelL
			    {
				    type="rotationY";
				    source="drivingWheel";  
				    selection="wheel_1_1";
				    axis="wheel_1_1_axis"; 
				    memory=1;
				    minValue="rad -90";
				    maxValue="rad +90";
				    angle0=1.047198;
				    angle1=-1.047198;     
			    };

			    class wheelR: wheelL
			    { 
				    selection="wheel_2_1";
				    axis="wheel_2_1_axis"; 
				    angle0=1.047198;
				    angle1=-1.047198;  
			    };
		    };
	    };
    };
	class WWM_SnowDoo_White: WWM_SnowDoo
	{
		scope	= 2; 			/// makes the car visible in editor
		scopeCurator=2;			// scope 2 means it's available in Zeus mode (0 means hidden)
		crew 	= "C_Driver_3_F"; 	/// we need someone to fit into the car
		side	= 3; 			/// civilian car should be on civilian side
		faction	= CIV_F;		/// and with civilian faction
		displayName = "WWM SnowDoo (White)";
		hiddenSelectionsTextures[] = {};
	};
};

currently running this in config.cpp for testing 

 

Is there a simple issue here to why my wheels wont turn? 

 

any help would be amazing. First model so once I got this sorted I'm away in the future  ;) 

 

Cheers

Share this post


Link to post
Share on other sites

Updated once more. No errors but no animation is working.

Any help will be amazing ! 

 

Here's my config.cpp:

#include "basicdefines_A3.hpp"
class DefaultEventhandlers;

#include "CfgPatches.hpp"

class cfgSkeletons {
    class Default
	{
	    isDiscrete = 1;
		skeletonInherit = "";
		skeletonBones[] = {};
	};
    class Vehicle : Default {};
		
	class WWM_SnowDoo_Skeleton : Vehicle
	{
		isDiscrete=1;
		skeletonInherit="";
		skeletonBones[]=
		{
			"drivewheel",
			"wheelL","wheelR"
		};
	};
};
	
class cfgModels {
    class Default
	{
		sectionsInherit = "";
		sections[] = {};
		skeletonName = "";
	};
	class Vehicle: Default
	{
		sections[] =
		{
			"drivewheel",
			"wheelL","wheelR"
		};
	};
	class WWM_SnowDoo : Vehicle
	{
		sectionsInherit="";
		sections[]=
		{
			"drivewheel",
		    "wheelL","wheelR"
		};

		skeletonName="WWM_SnowDoo_Skeleton";

		class Animations
		{
		    class DriveWheel
			{
				type="rotationY";
				source="drivingWheel";
				selection="drivewheel";
				axis="drivewheel_axis";
				memory=1;
				minValue="rad -90";
				maxValue="rad +90";
				angle0=1.047198;
				angle1=-1.047198;
		    };
			class wheelL
			{
				type="rotationY";
				source="drivingWheel";  
			    selection="wheel_1_1";
				axis="wheel_1_1_axis"; 
				memory=1;
			    minValue="rad -90";
				maxValue="rad +90";
			    angle0=1.047198;
				angle1=-1.047198;     
			};

			class wheelR : wheelL
			{ 
				selection="wheel_2_1";
				axis="wheel_2_1_axis"; 
				angle0=1.047198;
				angle1=-1.047198;  
			};
		};
	};
};

class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;

class CfgVehicles
{
	class Car;
	class Car_F: Car
	{
		class HitPoints /// we want to use hitpoints predefined for all cars
		{
            class HitEngine;
			class HitGlass1;			
		};
		class EventHandlers;
		class CargoTurret;
	};

	class WWM_SnowDoo: Car_F
	{
		cargoProxyIndexes[] = {1};
		driverCompartments = "Compartment1";
		cargoCompartments[] = {"Compartment2"};
		class Turrets
		{
			class CargoTurret_01: CargoTurret
			{
				gunnerGetInAction = "GetInLOW";
				gunnerGetOutAction = "GetOutLOW";
				gunnerAction = "passenger_inside_1";
				gunnerCompartments = "Compartment2";
				memoryPointsGetInGunner = "pos cargo";
				memoryPointsGetInGunnerDir = "pos cargo dir";
				gunnerName = "Gunner (Passenger)";
				proxyIndex = 1;
				initElev = 0;
				maxElev = 15;
				minElev = -5;
				initTurn = 0;
				maxTurn = 360;
				minTurn = 0;
				isPersonTurret = 1;
				ejectDeadGunner = 1;
			};
		};
		
		author = "BlackOps & Duck";
		model 	= "\WWM_SnowDoo\objects\SkiDoo.p3d";  
		picture	= "\A3\Weapons_F\Data\placeholder_co.paa"; 
		Icon	= "\A3\Weapons_F\Data\placeholder_co.paa";

		displayName = "Skidoo"; /// displayed in Editor

		hiddenSelections[] = {"camo1"}; ///we want to allow changing the color of this selection

		terrainCoef 	= 0; 	/// different surface affects this car more, stick to tarmac
		turnCoef 		= 2.5; 	/// should match the wheel turn radius
		precision 		= 10; 	/// how much freedom has the AI for its internal waypoints - lower number means more precise but slower approach to way
		brakeDistance 	= 3.0; 	/// how many internal waypoints should the AI plan braking in advance
		acceleration 	= 15; 	/// how fast acceleration does the AI think the car has

		fireResistance 	= 5; 	/// lesser protection against fire than tanks
		armor 			= 32; 	/// just some protection against missiles, collisions and explosions
		cost			= 50000; /// how likely is the enemy going to target this vehicle

		transportMaxBackpacks 	= 3; /// just some backpacks fit the trunk by default
		transportSoldier 		= 1; /// number of cargo except driver

		/// some values from parent class to show how to set them up
		wheelDamageRadiusCoef 	= 0.9; 			/// for precision tweaking of damaged wheel size
		wheelDestroyRadiusCoef 	= 0.4;			/// for tweaking of rims size to fit ground
		maxFordingDepth 		= 0.5;			/// how high water would damage the engine of the car
		waterResistance 		= 1;			/// if the depth of water is bigger than maxFordingDepth it starts to damage the engine after this time
		crewCrashProtection		= 0.25;			/// multiplier of damage to crew of the vehicle => low number means better protection
		driverLeftHandAnimName 	= "drivewheel"; /// according to what bone in model of car does hand move
		driverRightHandAnimName = "drivewheel";	/// beware, non-existent bones may cause game crashes (even if the bones are hidden during play)

		class TransportItems /// some first aid kits in trunk according to safety regulations
		{
			item_xx(FirstAidKit,1);
		};

		class HitPoints: HitPoints
		{
			class HitEngine 		{armor=0.50; material=-1; name="engine"; visual=""; passThrough=0.2;};
			class HitGlass1: HitGlass1 {armor=0.25;}; /// it is pretty easy to puncture the glass but not so easy to remove it
		};

		driverAction = "driver_quadbike";
		getInAction = "GetInQuadbike";
		getOutAction = "GetOutLow";
		//cargoAction[] = {"passenger_quadbike"};
		//cargoGetInAction[] = {"GetInQuadbike_cargo"};
		//cargoGetOutAction[] = {"GetOutLow"};

		#include "sounds.hpp"	/// sounds are in a separate file to make this one simple
		#include "physx.hpp"	/// PhysX settings are in a separate file to make this one simple

		class PlayerSteeringCoefficients /// steering sensitivity configuration
		{
			 turnIncreaseConst 	= 0.3; // basic sensitivity value, higher value = faster steering
			 turnIncreaseLinear = 1.0; // higher value means less sensitive steering in higher speed, more sensitive in lower speeds
			 turnIncreaseTime 	= 1.0; // higher value means smoother steering around the center and more sensitive when the actual steering angle gets closer to the max. steering angle

			 turnDecreaseConst 	= 5.0; // basic caster effect value, higher value = the faster the wheels align in the direction of travel
			 turnDecreaseLinear = 3.0; // higher value means faster wheel re-centering in higher speed, slower in lower speeds
			 turnDecreaseTime 	= 0.0; // higher value means stronger caster effect at the max. steering angle and weaker once the wheels are closer to centered position

			 maxTurnHundred 	= 0.7; // coefficient of the maximum turning angle @ 100km/h; limit goes linearly to the default max. turn. angle @ 0km/h
		};

		/// memory points where do tracks of the wheel appear
		// front left track, left offset
		memoryPointTrackFLL = "TrackFLL";
		// front left track, right offset
		memoryPointTrackFLR = "TrackFLR";
		// back left track, left offset
		memoryPointTrackBLL = "TrackBLL";
		// back left track, right offset
		memoryPointTrackBLR = "TrackBLR";
		// front right track, left offset
		memoryPointTrackFRL = "TrackFRL";
		// front right track, right offset
		memoryPointTrackFRR = "TrackFRR";
		// back right track, left offset
		memoryPointTrackBRL = "TrackBRL";
		// back right track, right offset
		memoryPointTrackBRR = "TrackBRR";
		
		
		class Damage /// damage changes material in specific places (visual in hitPoint)
		{
			tex[]={};
			mat[]=
			{
				"A3\data_f\glass_veh_int.rvmat", 		/// material mapped in model
				"A3\data_f\Glass_veh_damage.rvmat", 	/// changes to this one once damage of the part reaches 0.5
				"A3\data_f\Glass_veh_damage.rvmat",		/// changes to this one once damage of the part reaches 1

				"A3\data_f\glass_veh.rvmat",			/// another material
				"A3\data_f\Glass_veh_damage.rvmat",		/// changes into different ones
				"A3\data_f\Glass_veh_damage.rvmat"
			};
		};

		class Exhausts /// specific exhaust effects for the car
		{
			class Exhaust1 /// the car has two exhausts - each on one side
			{
				position 	= "exhaust";  		/// name of initial memory point
				direction 	= "exhaust_dir";	/// name of memory point for exhaust direction
				effect 		= "ExhaustsEffect";	/// what particle effect is it going to use
			};			
		};

		class Reflectors	/// only front lights are considered to be reflectors to save CPU
		{
			class LightCarHeadL01 	/// lights on each side consist of two bulbs with different flares
			{
				color[] 		= {1900, 1800, 1700};		/// approximate colour of standard lights
				ambient[]		= {5, 5, 5};				/// nearly a white one
				position 		= "LightCarHeadL01";		/// memory point for start of the light and flare
				direction 		= "LightCarHeadL01_end";	/// memory point for the light direction
				hitpoint 		= "Light_L";				/// point(s) in hitpoint lod for the light (hitPoints are created by engine)
				selection 		= "Light_L";				/// selection for artificial glow around the bulb, not much used any more
				size 			= 1;						/// size of the light point seen from distance
				innerAngle 		= 100;						/// angle of full light
				outerAngle 		= 179;						/// angle of some light
				coneFadeCoef 	= 10;						/// attenuation of light between the above angles
				intensity 		= 1;						/// strength of the light
				useFlare 		= true;						/// does the light use flare?
				dayLight 		= false;					/// switching light off during day saves CPU a lot
				flareSize 		= 1.0;						/// how big is the flare

				class Attenuation
				{
					start 			= 1.0;
					constant 		= 0;
					linear 			= 0;
					quadratic 		= 0.25;
					hardLimitStart 	= 30;		/// it is good to have some limit otherwise the light would shine to infinite distance
					hardLimitEnd 	= 60;		/// this allows adding more lights into scene
				};
			};

			class LightCarHeadL02: LightCarHeadL01
			{
				position 	= "LightCarHeadL02";
				direction 	= "LightCarHeadL02_end";
				FlareSize 	= 0.5;						/// side bulbs aren't that strong
			};

			class LightCarHeadR01: LightCarHeadL01
			{
				position 	= "LightCarHeadR01";
				direction 	= "LightCarHeadR01_end";
				hitpoint 	= "Light_R";
				selection 	= "Light_R";
			};

			class LightCarHeadR02: LightCarHeadR01
			{
				position 	= "LightCarHeadR02";
				direction 	= "LightCarHeadR02_end";
				FlareSize 	= 0.5;
			};
		};
		
		aggregateReflectors[] = {{"LightCarHeadL01", "LightCarHeadL02"}, {"LightCarHeadR01", "LightCarHeadR02"}};
		
		class EventHandlers {};
		class textureSources {};
		
		
	};
	
	class WWM_SnowDoo_White: WWM_SnowDoo
	{
		scope	= 2; 			/// makes the car visible in editor
		scopeCurator=2;			// scope 2 means it's available in Zeus mode (0 means hidden)
		crew 	= "C_Driver_3_F"; 	/// we need someone to fit into the car
		side	= 3; 			/// civilian car should be on civilian side
		faction	= CIV_F;		/// and with civilian faction
		displayName = "WWM SnowDoo (White)";
		hiddenSelectionsTextures[] = {};
	};
};

 

Cheers

Share this post


Link to post
Share on other sites

cheers for the reply mate  

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

×