mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-28 07:45:40 +00:00
391 lines
13 KiB
C#
391 lines
13 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) 2012 GarageGames, LLC
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to
|
|
// deal in the Software without restriction, including without limitation the
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
// sell copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
// IN THE SOFTWARE.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
datablock SFXProfile(cheetahEngine)
|
|
{
|
|
preload = "1";
|
|
description = "AudioCloseLoop3D";
|
|
fileName = "data/FPSGameplay/sound/cheetah/cheetah_engine.ogg";
|
|
};
|
|
|
|
datablock SFXProfile(cheetahSqueal)
|
|
{
|
|
preload = "1";
|
|
description = "AudioDefault3D";
|
|
fileName = "data/FPSGameplay/sound/cheetah/cheetah_squeal.ogg";
|
|
};
|
|
|
|
datablock SFXProfile(hardImpact)
|
|
{
|
|
preload = "1";
|
|
description = "AudioDefault3D";
|
|
fileName = "data/FPSGameplay/sound/cheetah/hardImpact.ogg";
|
|
};
|
|
|
|
datablock SFXProfile(softImpact)
|
|
{
|
|
preload = "1";
|
|
description = "AudioDefault3D";
|
|
fileName = "data/FPSGameplay/sound/cheetah/softImpact.ogg";
|
|
};
|
|
|
|
datablock SFXProfile(DirtKickup)
|
|
{
|
|
preload = "1";
|
|
description = "AudioDefault3D";
|
|
fileName = "data/FPSGameplay/sound/cheetah/softImpact.ogg";
|
|
};
|
|
|
|
datablock SFXProfile(CheetahTurretFireSound)
|
|
{
|
|
//filename = "data/FPSGameplay/sound/cheetah/turret_firing.wav";
|
|
filename = "data/FPSGameplay/sound/turret/wpn_turret_fire.wav";
|
|
description = BulletFireDesc;
|
|
preload = true;
|
|
};
|
|
|
|
datablock ParticleData(CheetahTireParticle)
|
|
{
|
|
textureName = "data/FPSGameplay/art/particles/dustParticle";
|
|
dragCoefficient = "1.99902";
|
|
gravityCoefficient = "-0.100122";
|
|
inheritedVelFactor = "0.0998043";
|
|
constantAcceleration = 0.0;
|
|
lifetimeMS = 1000;
|
|
lifetimeVarianceMS = 400;
|
|
colors[0] = "0.456693 0.354331 0.259843 1";
|
|
colors[1] = "0.456693 0.456693 0.354331 0";
|
|
sizes[0] = "0.997986";
|
|
sizes[1] = "3.99805";
|
|
sizes[2] = "1.0";
|
|
sizes[3] = "1.0";
|
|
times[0] = "0.0";
|
|
times[1] = "1";
|
|
times[2] = "1";
|
|
times[3] = "1";
|
|
};
|
|
|
|
datablock ParticleEmitterData(CheetahTireEmitter)
|
|
{
|
|
ejectionPeriodMS = 20;
|
|
periodVarianceMS = 10;
|
|
ejectionVelocity = "14.57";
|
|
velocityVariance = 1.0;
|
|
ejectionOffset = 0.0;
|
|
thetaMin = 0;
|
|
thetaMax = 60;
|
|
phiReferenceVel = 0;
|
|
phiVariance = 360;
|
|
overrideAdvance = false;
|
|
particles = "CheetahTireParticle";
|
|
blendStyle = "ADDITIVE";
|
|
};
|
|
|
|
datablock ProjectileData(TurretProjectile)
|
|
{
|
|
projectileShapeName = "data/FPSGameplay/art/shapes/weapons/shared/rocket.dts";
|
|
directDamage = 10;
|
|
radiusDamage = 15;
|
|
damageRadius = 3;
|
|
areaImpulse = 1200;
|
|
|
|
explosion = RocketLauncherExplosion;
|
|
waterExplosion = RocketLauncherWaterExplosion;
|
|
|
|
decal = ScorchRXDecal;
|
|
splash = RocketSplash;
|
|
|
|
muzzleVelocity = 250;
|
|
velInheritFactor = 0.7;
|
|
|
|
armingDelay = 0;
|
|
lifetime = 5000;
|
|
fadeDelay = 4500;
|
|
|
|
bounceElasticity = 0;
|
|
bounceFriction = 0;
|
|
isBallistic = false;
|
|
gravityMod = 0.80;
|
|
|
|
damageType = "RocketDamage";
|
|
};
|
|
|
|
datablock ParticleEmitterData(TurretFireSmokeEmitter)
|
|
{
|
|
ejectionPeriodMS = 10;
|
|
periodVarianceMS = 5;
|
|
ejectionVelocity = 6.5;
|
|
velocityVariance = 1.0;
|
|
thetaMin = "0";
|
|
thetaMax = "0";
|
|
lifetimeMS = 350;
|
|
particles = "GunFireSmoke";
|
|
blendStyle = "NORMAL";
|
|
softParticles = "0";
|
|
alignParticles = "0";
|
|
orientParticles = "0";
|
|
};
|
|
|
|
datablock ShapeBaseImageData(TurretImage)
|
|
{
|
|
// Basic Item properties
|
|
shapeFile = "data/FPSGameplay/art/shapes/Cheetah/Cheetah_Turret.DAE";
|
|
emap = true;
|
|
|
|
// Specify mount point & offset for 3rd person, and eye offset
|
|
// for first person rendering.
|
|
mountPoint = 1;
|
|
firstPerson = false;
|
|
|
|
// When firing from a point offset from the eye, muzzle correction
|
|
// will adjust the muzzle vector to point to the eye LOS point.
|
|
// Since this weapon doesn't actually fire from the muzzle point,
|
|
// we need to turn this off.
|
|
correctMuzzleVector = false;
|
|
|
|
// Add the WeaponImage namespace as a parent, WeaponImage namespace
|
|
// provides some hooks into the inventory system.
|
|
className = "WeaponImage";
|
|
class = "WeaponImage";
|
|
|
|
// Projectile and Ammo
|
|
ammo = BulletAmmo;
|
|
|
|
projectile = TurretProjectile;
|
|
projectileType = Projectile;
|
|
projectileSpread = "0.01";
|
|
|
|
// Weapon lights up while firing
|
|
lightColor = "0.992126 0.968504 0.708661 1";
|
|
lightRadius = "4";
|
|
lightDuration = "100";
|
|
lightType = "WeaponFireLight";
|
|
lightBrightness = 2;
|
|
|
|
// Shake camera while firing.
|
|
shakeCamera = false;
|
|
|
|
// Images have a state system which controls how the animations
|
|
// are run, which sounds are played, script callbacks, etc. This
|
|
// state system is downloaded to the client so that clients can
|
|
// predict state changes and animate accordingly. The following
|
|
// system supports basic ready->fire->reload transitions as
|
|
// well as a no-ammo->dryfire idle state.
|
|
|
|
useRemainderDT = true;
|
|
|
|
// Initial start up state
|
|
stateName[0] = "Preactivate";
|
|
stateTransitionOnLoaded[0] = "Activate";
|
|
stateTransitionOnNoAmmo[0] = "NoAmmo";
|
|
|
|
// Activating the gun. Called when the weapon is first
|
|
// mounted and there is ammo.
|
|
stateName[1] = "Activate";
|
|
stateTransitionOnTimeout[1] = "Ready";
|
|
stateTimeoutValue[1] = 0.5;
|
|
stateSequence[1] = "Activate";
|
|
|
|
// Ready to fire, just waiting for the trigger
|
|
stateName[2] = "Ready";
|
|
stateTransitionOnNoAmmo[2] = "NoAmmo";
|
|
stateTransitionOnTriggerDown[2] = "Fire";
|
|
|
|
// Fire the weapon. Calls the fire script which does
|
|
// the actual work.
|
|
stateName[3] = "Fire";
|
|
stateTransitionOnTimeout[3] = "Reload";
|
|
stateTimeoutValue[3] = 0.1;
|
|
stateFire[3] = true;
|
|
stateRecoil[3] = "";
|
|
stateAllowImageChange[3] = false;
|
|
stateSequence[3] = "Fire";
|
|
stateSequenceRandomFlash[3] = true; // use muzzle flash sequence
|
|
stateScript[3] = "onFire";
|
|
stateSound[3] = CheetahTurretFireSound;
|
|
stateEmitter[3] = TurretFireSmokeEmitter;
|
|
stateEmitterTime[3] = 0.025;
|
|
|
|
// Play the reload animation, and transition into
|
|
stateName[4] = "Reload";
|
|
stateTransitionOnNoAmmo[4] = "NoAmmo";
|
|
stateWaitForTimeout[4] = "0";
|
|
stateTransitionOnTimeout[4] = "Ready";
|
|
stateTimeoutValue[4] = 1.2;
|
|
stateAllowImageChange[4] = false;
|
|
stateSequence[4] = "Reload";
|
|
//stateEjectShell[4] = true;
|
|
|
|
// No ammo in the weapon, just idle until something
|
|
// shows up. Play the dry fire sound if the trigger is
|
|
// pulled.
|
|
stateName[5] = "NoAmmo";
|
|
stateTransitionOnAmmo[5] = "Reload";
|
|
stateSequence[5] = "NoAmmo";
|
|
stateTransitionOnTriggerDown[5] = "DryFire";
|
|
|
|
// No ammo dry fire
|
|
stateName[6] = "DryFire";
|
|
stateTimeoutValue[6] = 1.0;
|
|
stateTransitionOnTimeout[6] = "NoAmmo";
|
|
stateScript[6] = "onDryFire";
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Information extacted from the shape.
|
|
//
|
|
// Wheel Sequences
|
|
// spring# Wheel spring motion: time 0 = wheel fully extended,
|
|
// the hub must be displaced, but not directly animated
|
|
// as it will be rotated in code.
|
|
// Other Sequences
|
|
// steering Wheel steering: time 0 = full right, 0.5 = center
|
|
// breakLight Break light, time 0 = off, 1 = breaking
|
|
//
|
|
// Wheel Nodes
|
|
// hub# Wheel hub, the hub must be in it's upper position
|
|
// from which the springs are mounted.
|
|
//
|
|
// The steering and animation sequences are optional.
|
|
// The center of the shape acts as the center of mass for the car.
|
|
|
|
//-----------------------------------------------------------------------------
|
|
datablock WheeledVehicleTire(CheetahCarTire)
|
|
{
|
|
// Tires act as springs and generate lateral and longitudinal
|
|
// forces to move the vehicle. These distortion/spring forces
|
|
// are what convert wheel angular velocity into forces that
|
|
// act on the rigid body.
|
|
shapeFile = "data/FPSGameplay/art/shapes/Cheetah/wheel.DAE";
|
|
staticFriction = 4.2;
|
|
kineticFriction = "1";
|
|
|
|
// Spring that generates lateral tire forces
|
|
lateralForce = 18000;
|
|
lateralDamping = 6000;
|
|
lateralRelaxation = 1;
|
|
|
|
// Spring that generates longitudinal tire forces
|
|
longitudinalForce = 18000;
|
|
longitudinalDamping = 4000;
|
|
longitudinalRelaxation = 1;
|
|
radius = "0.609998";
|
|
};
|
|
|
|
datablock WheeledVehicleTire(CheetahCarTireRear)
|
|
{
|
|
// Tires act as springs and generate lateral and longitudinal
|
|
// forces to move the vehicle. These distortion/spring forces
|
|
// are what convert wheel angular velocity into forces that
|
|
// act on the rigid body.
|
|
shapeFile = "data/FPSGameplay/art/shapes/Cheetah/wheelBack.DAE";
|
|
staticFriction = "7.2";
|
|
kineticFriction = "1";
|
|
|
|
// Spring that generates lateral tire forces
|
|
lateralForce = "19000";
|
|
lateralDamping = 6000;
|
|
lateralRelaxation = 1;
|
|
|
|
// Spring that generates longitudinal tire forces
|
|
longitudinalForce = 18000;
|
|
longitudinalDamping = 4000;
|
|
longitudinalRelaxation = 1;
|
|
radius = "0.840293";
|
|
};
|
|
|
|
datablock WheeledVehicleSpring(CheetahCarSpring)
|
|
{
|
|
// Wheel suspension properties
|
|
length = 0.5; // Suspension travel
|
|
force = 2800; // Spring force
|
|
damping = 3600; // Spring damping
|
|
antiSwayForce = 3; // Lateral anti-sway force
|
|
};
|
|
|
|
datablock WheeledVehicleData(CheetahCar)
|
|
{
|
|
category = "Vehicles";
|
|
shapeFile = "data/FPSGameplay/art/shapes/Cheetah/Cheetah_Body.DAE";
|
|
emap = 1;
|
|
|
|
mountPose[0] = sitting;
|
|
numMountPoints = 6;
|
|
|
|
useEyePoint = true; // Use the vehicle's camera node rather than the player's
|
|
|
|
maxSteeringAngle = 0.585; // Maximum steering angle, should match animation
|
|
|
|
// 3rd person camera settings
|
|
cameraRoll = false; // Roll the camera with the vehicle
|
|
cameraMaxDist = 7.8; // Far distance from vehicle
|
|
cameraOffset = 1.0; // Vertical offset from camera mount point
|
|
cameraLag = "0.3"; // Velocity lag of camera
|
|
cameraDecay = 1.25; // Decay per sec. rate of velocity lag
|
|
|
|
// Rigid Body
|
|
mass = "400";
|
|
massCenter = "0 0.5 0"; // Center of mass for rigid body
|
|
massBox = "0 0 0"; // Size of box used for moment of inertia,
|
|
// if zero it defaults to object bounding box
|
|
drag = 0.6; // Drag coefficient
|
|
bodyFriction = 0.6;
|
|
bodyRestitution = 0.4;
|
|
minImpactSpeed = 5; // Impacts over this invoke the script callback
|
|
softImpactSpeed = 5; // Play SoftImpact Sound
|
|
hardImpactSpeed = 15; // Play HardImpact Sound
|
|
integration = 8; // Physics integration: TickSec/Rate
|
|
collisionTol = "0.1"; // Collision distance tolerance
|
|
contactTol = "0.4"; // Contact velocity tolerance
|
|
|
|
// Engine
|
|
engineTorque = 4300; // Engine power
|
|
engineBrake = "5000"; // Braking when throttle is 0
|
|
brakeTorque = "10000"; // When brakes are applied
|
|
maxWheelSpeed = 50; // Engine scale by current speed / max speed
|
|
|
|
// Energy
|
|
maxEnergy = 100;
|
|
jetForce = 3000;
|
|
minJetEnergy = 30;
|
|
jetEnergyDrain = 2;
|
|
|
|
// Sounds
|
|
engineSound = cheetahEngine;
|
|
//squealSound = cheetahSqueal;
|
|
softImpactSound = softImpact;
|
|
hardImpactSound = hardImpact;
|
|
|
|
// Dynamic fields accessed via script
|
|
nameTag = 'Cheetah';
|
|
maxDismountSpeed = 10;
|
|
maxMountSpeed = 5;
|
|
mountPose0 = "sitting";
|
|
tireEmitter = "CheetahTireEmitter";
|
|
dustEmitter = "CheetahTireEmitter";
|
|
dustHeight = "1";
|
|
|
|
// Mount slots
|
|
turretSlot = 1;
|
|
rightBrakeSlot = 2;
|
|
leftBrakeSlot = 3;
|
|
};
|