Index: ps/trunk/binaries/data/mods/public/globalscripts/Templates.js
===================================================================
--- ps/trunk/binaries/data/mods/public/globalscripts/Templates.js
+++ ps/trunk/binaries/data/mods/public/globalscripts/Templates.js
@@ -437,10 +437,12 @@
if (template.UnitMotion)
{
+ const walkSpeed = getEntityValue("UnitMotion/WalkSpeed");
ret.speed = {
- "walk": getEntityValue("UnitMotion/WalkSpeed"),
+ "walk": walkSpeed,
+ "run": walkSpeed,
+ "acceleration": getEntityValue("UnitMotion/Acceleration")
};
- ret.speed.run = getEntityValue("UnitMotion/WalkSpeed");
if (template.UnitMotion.RunMultiplier)
ret.speed.run *= getEntityValue("UnitMotion/RunMultiplier");
}
Index: ps/trunk/binaries/data/mods/public/gui/common/tooltips.js
===================================================================
--- ps/trunk/binaries/data/mods/public/gui/common/tooltips.js
+++ ps/trunk/binaries/data/mods/public/gui/common/tooltips.js
@@ -1005,12 +1005,13 @@
if (!template.speed)
return "";
- let walk = template.speed.walk.toFixed(1);
- let run = template.speed.run.toFixed(1);
+ const walk = template.speed.walk.toFixed(1);
+ const run = template.speed.run.toFixed(1);
if (walk == 0 && run == 0)
return "";
+ const acceleration = template.speed.acceleration.toFixed(1);
return sprintf(translate("%(label)s %(speeds)s"), {
"label": headerFont(translate("Speed:")),
"speeds":
@@ -1022,6 +1023,11 @@
sprintf(translate("%(speed)s %(movementType)s"), {
"speed": run,
"movementType": unitFont(translate("Run"))
+ }) +
+ commaFont(translate(", ")) +
+ sprintf(translate("%(speed)s %(movementType)s"), {
+ "speed": acceleration,
+ "movementType": unitFont(translate("Acceleration"))
})
});
}
Index: ps/trunk/binaries/data/mods/public/simulation/components/Formation.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/components/Formation.js
+++ ps/trunk/binaries/data/mods/public/simulation/components/Formation.js
@@ -895,17 +895,22 @@
{
let maxRadius = 0;
let minSpeed = Infinity;
+ let minAcceleration = Infinity;
for (let ent of this.members)
{
let cmpUnitMotion = Engine.QueryInterface(ent, IID_UnitMotion);
if (cmpUnitMotion)
+ {
minSpeed = Math.min(minSpeed, cmpUnitMotion.GetWalkSpeed());
+ minAcceleration = Math.min(minAcceleration, cmpUnitMotion.GetAcceleration());
+ }
}
minSpeed *= this.GetSpeedMultiplier();
let cmpUnitMotion = Engine.QueryInterface(this.entity, IID_UnitMotion);
cmpUnitMotion.SetSpeedMultiplier(minSpeed / cmpUnitMotion.GetWalkSpeed());
+ cmpUnitMotion.SetAcceleration(minAcceleration);
};
Formation.prototype.ShapeUpdate = function()
Index: ps/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
+++ ps/trunk/binaries/data/mods/public/simulation/components/GuiInterface.js
@@ -585,7 +585,8 @@
if (cmpUnitMotion)
ret.speed = {
"walk": cmpUnitMotion.GetWalkSpeed(),
- "run": cmpUnitMotion.GetWalkSpeed() * cmpUnitMotion.GetRunMultiplier()
+ "run": cmpUnitMotion.GetWalkSpeed() * cmpUnitMotion.GetRunMultiplier(),
+ "acceleration": cmpUnitMotion.GetAcceleration()
};
let cmpUpkeep = Engine.QueryInterface(ent, IID_Upkeep);
Index: ps/trunk/binaries/data/mods/public/simulation/components/UnitMotionFlying.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/components/UnitMotionFlying.js
+++ ps/trunk/binaries/data/mods/public/simulation/components/UnitMotionFlying.js
@@ -345,6 +345,16 @@
return this.speed / +this.template.MaxSpeed;
};
+UnitMotionFlying.prototype.GetAcceleration = function()
+{
+ return +this.template.AccelRate;
+};
+
+UnitMotionFlying.prototype.SetAcceleration = function()
+{
+ // Acceleration is set by the template. Ignore.
+};
+
UnitMotionFlying.prototype.GetPassabilityClassName = function()
{
return this.template.PassabilityClass;
Index: ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
+++ ps/trunk/binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
@@ -94,6 +94,7 @@
"MoveToTargetRange": () => true,
"GetRunMultiplier": () => 1,
"SetSpeedMultiplier": () => {},
+ "GetAcceleration": () => 1,
"StopMoving": () => {}
});
@@ -168,6 +169,7 @@
AddMock(unit, IID_UnitMotion, {
"GetWalkSpeed": () => 1,
+ "GetAcceleration": () => 1,
"MoveToFormationOffset": (target, x, z) => {},
"MoveToTargetRange": (target, min, max) => true,
"SetMemberOfFormation": () => {},
@@ -243,6 +245,7 @@
"GetWalkSpeed": () => 1,
"StopMoving": () => {},
"SetSpeedMultiplier": () => {},
+ "SetAcceleration": (accel) => {},
"MoveToPointRange": () => true,
"SetFacePointAfterMove": () => {},
"GetFacePointAfterMove": () => true,
@@ -348,6 +351,7 @@
AddMock(unit + i, IID_UnitMotion, {
"GetWalkSpeed": () => 1,
+ "GetAcceleration": () => 1,
"MoveToFormationOffset": (target, x, z) => {},
"MoveToTargetRange": (target, min, max) => true,
"SetMemberOfFormation": () => {},
@@ -414,6 +418,7 @@
AddMock(controller, IID_UnitMotion, {
"GetWalkSpeed": () => 1,
"SetSpeedMultiplier": (speed) => {},
+ "SetAcceleration": (accel) => {},
"MoveToPointRange": (x, z, minRange, maxRange) => {},
"StopMoving": () => {},
"SetFacePointAfterMove": () => {},
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_camel.xml
@@ -27,6 +27,7 @@
0.45
+ 0.45
fauna/camel.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_chicken.xml
@@ -42,6 +42,7 @@
0.15
+ 0.15
fauna/chicken.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile_nile.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile_nile.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_crocodile_nile.xml
@@ -47,6 +47,7 @@
0.3
+ 0.3
fauna/crocodile.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_donkey.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_donkey.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_donkey.xml
@@ -28,6 +28,7 @@
0.8
+ 0.8
fauna/donkey.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe.xml
@@ -20,6 +20,7 @@
0.6
+ 0.6
fauna/giraffe_adult.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_giraffe_infant.xml
@@ -20,6 +20,7 @@
0.6
+ 0.6
fauna/giraffe_baby.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_goat.xml
@@ -35,6 +35,7 @@
0.45
+ 0.45
fauna/goat.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_horse.xml
@@ -28,6 +28,7 @@
0.8
+ 0.8
fauna/horse.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_lion.xml
@@ -36,6 +36,7 @@
0.45
+ 0.45
fauna/lion.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_peacock.xml
@@ -40,6 +40,7 @@
0.3
+ 0.3
fauna/peacock.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig.xml
@@ -35,6 +35,7 @@
0.45
+ 0.45
fauna/pig1.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_pig_flaming.xml
@@ -29,6 +29,7 @@
3.5
+ 3.5
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_piglet.xml
@@ -19,6 +19,7 @@
0.25
+ 0.25
fauna/piglet.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
@@ -45,6 +45,7 @@
ship-small
0.6
+ 0.6
false
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_sheep.xml
@@ -35,6 +35,7 @@
0.45
+ 0.45
fauna/sheep3.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_wildebeest.xml
@@ -20,6 +20,7 @@
0.9
+ 0.9
fauna/wildebeest.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/gaia/fauna_zebra.xml
@@ -20,6 +20,7 @@
0.9
+ 0.9
fauna/zebra.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_formation.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_formation.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_formation.xml
@@ -69,8 +69,10 @@
true
- 1.0
- 100.0
+ 1
+ 100
+ 0.1
+ 100
large
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit.xml
@@ -123,8 +123,10 @@
false
default
- 9.0
+ 9
1.67
+ 1.5
+ 18
false
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml
@@ -52,6 +52,7 @@
large
0.55
+ 0.275
units/global/catafalque.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml
@@ -36,5 +36,6 @@
0.85
+ 0.85
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml
@@ -41,5 +41,6 @@
0.8
+ 0.8
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml
@@ -36,5 +36,6 @@
0.9
+ 0.9
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
@@ -42,5 +42,6 @@
0.85
+ 0.85
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml
@@ -42,5 +42,6 @@
0.8
+ 0.8
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml
@@ -42,5 +42,6 @@
0.9
+ 0.9
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
@@ -55,6 +55,7 @@
large
+ 0.5
100
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
@@ -46,5 +46,6 @@
1.2
+ 2.4
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml
@@ -46,5 +46,6 @@
0.6
+ 1.2
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml
@@ -46,5 +46,6 @@
1.2
+ 1.2
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
@@ -46,5 +46,6 @@
0.9
+ 0.9
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_dog.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_dog.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_dog.xml
@@ -67,6 +67,7 @@
1.5
2
+ 1.5
30
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_elephant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_elephant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_elephant.xml
@@ -54,6 +54,7 @@
large
+ 0.5
100
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
@@ -46,6 +46,7 @@
0.7
+ 0.7
true
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_herd_domestic_cattle.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_herd_domestic_cattle.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_herd_domestic_cattle.xml
@@ -11,5 +11,6 @@
0.4
1.4
+ 0.4
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_bull.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_bull.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_bull.xml
@@ -16,5 +16,6 @@
large
0.4
2.0
+ 0.4
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
@@ -21,5 +21,6 @@
large
0.5
+ 0.25
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_whale.xml
@@ -55,5 +55,6 @@
ship-small
1.8
1
+ 1.8
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_fauna_wild_aggressive_dog.xml
@@ -14,5 +14,6 @@
1.6
+ 1.6
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
@@ -42,5 +42,6 @@
0.85
+ 0.85
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml
@@ -42,5 +42,6 @@
0.8
+ 0.8
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml
@@ -42,5 +42,6 @@
0.9
+ 0.9
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
@@ -73,5 +73,6 @@
large
+ 0.5
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
@@ -50,5 +50,6 @@
0.9
+ 0.9
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml
@@ -48,5 +48,6 @@
1.2
+ 2.4
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml
@@ -49,5 +49,6 @@
0.6
+ 1.2
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml
@@ -47,5 +47,6 @@
2.4
+ 4.8
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml
@@ -49,5 +49,6 @@
1.2
+ 1.2
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship.xml
@@ -73,5 +73,7 @@
ship
+ 0.5
+ 0.25
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
@@ -59,6 +59,7 @@
1.55
+ 1.55
90
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fire.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fire.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fire.xml
@@ -47,6 +47,7 @@
ship-small
1.6
+ 1.6
60
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
@@ -71,6 +71,7 @@
ship-small
1.1
+ 1.1
30
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
@@ -39,6 +39,7 @@
ship-small
1.35
+ 1.6
50
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml
@@ -67,6 +67,7 @@
1.8
+ 1.8
110
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
@@ -62,6 +62,7 @@
1.8
+ 1.8
90
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege.xml
@@ -60,5 +60,7 @@
large
1
+ 0.75
+ 0.25
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml
@@ -71,6 +71,7 @@
0.9
+ 0.9
100
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_ram.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_ram.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_ram.xml
@@ -59,6 +59,7 @@
0.8
+ 0.8
80
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml
@@ -64,6 +64,7 @@
0.8
+ 0.8
100
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
@@ -95,6 +95,7 @@
0.7
+ 0.7
80
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_support_elephant.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_support_elephant.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_unit_support_elephant.xml
@@ -70,6 +70,7 @@
large
0.6
+ 0.3
50
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/ship_trireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/ship_trireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/ship_trireme.xml
@@ -23,6 +23,7 @@
0.9
+ 0.9
structures/celts/warship.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_fanatic.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_fanatic.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_fanatic.xml
@@ -17,6 +17,7 @@
1.4
+ 1.4
units/gauls/infantry_spearman_c.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/ship_trireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/ship_trireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/ship_trireme.xml
@@ -23,6 +23,7 @@
0.9
+ 0.9
structures/celts/warship.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/ship_trireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/ship_trireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/ship_trireme.xml
@@ -24,6 +24,7 @@
0.9
+ 0.9
structures/iberians/warship.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/ship_trireme.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/ship_trireme.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/ship_trireme.xml
@@ -23,6 +23,7 @@
0.9
+ 0.9
structures/mauryas/trireme.xml
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_spear_gladiator.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_spear_gladiator.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_spear_gladiator.xml
@@ -36,6 +36,7 @@
1.5
+ 1.5
0.5
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_sword_gladiator.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_sword_gladiator.xml
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_sword_gladiator.xml
@@ -37,6 +37,7 @@
1.4
+ 1.4
0.5
Index: ps/trunk/source/simulation2/components/CCmpUnitMotion.h
===================================================================
--- ps/trunk/source/simulation2/components/CCmpUnitMotion.h
+++ ps/trunk/source/simulation2/components/CCmpUnitMotion.h
@@ -153,7 +153,7 @@
bool m_IsFormationController;
- fixed m_TemplateWalkSpeed, m_TemplateRunMultiplier;
+ fixed m_TemplateWalkSpeed, m_TemplateRunMultiplier, m_TemplateAcceleration;
pass_class_t m_PassClass;
std::string m_PassClassName;
@@ -225,8 +225,12 @@
// This caches the resulting speed from m_WalkSpeed * m_SpeedMultiplier for convenience.
fixed m_Speed;
- // Current mean speed (over the last turn).
- fixed m_CurSpeed;
+ // The speed achieved at the end of the current turn.
+ fixed m_CurrentSpeed;
+
+ fixed m_InstantTurnAngle;
+
+ fixed m_Acceleration;
// Currently active paths (storing waypoints in reverse order).
// The last item in each path is the point we're currently heading towards.
@@ -244,15 +248,21 @@
""
""
""
- ""
+ ""
""
""
""
- ""
+ ""
""
""
""
- ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
+ ""
""
""
""
@@ -270,12 +280,16 @@
m_WalkSpeed = m_TemplateWalkSpeed = m_Speed = paramNode.GetChild("WalkSpeed").ToFixed();
m_SpeedMultiplier = fixed::FromInt(1);
- m_CurSpeed = fixed::Zero();
+ m_CurrentSpeed = fixed::Zero();
m_RunMultiplier = m_TemplateRunMultiplier = fixed::FromInt(1);
if (paramNode.GetChild("RunMultiplier").IsOk())
m_RunMultiplier = m_TemplateRunMultiplier = paramNode.GetChild("RunMultiplier").ToFixed();
+ m_InstantTurnAngle = paramNode.GetChild("InstantTurnAngle").ToFixed();
+
+ m_Acceleration = m_TemplateAcceleration = paramNode.GetChild("Acceleration").ToFixed();
+
CmpPtr cmpPathfinder(GetSystemEntity());
if (cmpPathfinder)
{
@@ -322,7 +336,11 @@
serialize.NumberFixed_Unbounded("speed multiplier", m_SpeedMultiplier);
- serialize.NumberFixed_Unbounded("current speed", m_CurSpeed);
+ serialize.NumberFixed_Unbounded("current speed", m_CurrentSpeed);
+
+ serialize.NumberFixed_Unbounded("instant turn angle", m_InstantTurnAngle);
+
+ serialize.NumberFixed_Unbounded("acceleration", m_Acceleration);
serialize.Bool("facePointAfterMove", m_FacePointAfterMove);
serialize.Bool("pushing", m_Pushing);
@@ -456,15 +474,25 @@
CFixedVector2D pos = cmpPosition->GetPosition2D();
entity_angle_t angle = cmpPosition->GetRotation().Y;
-
+ fixed speed = m_CurrentSpeed;
// Copy the path so we don't change it.
WaypointPath shortPath = m_ShortPath;
WaypointPath longPath = m_LongPath;
- PerformMove(dt, cmpPosition->GetTurnRate(), shortPath, longPath, pos, angle);
+ PerformMove(dt, cmpPosition->GetTurnRate(), shortPath, longPath, pos, speed, angle);
return pos;
}
+ virtual fixed GetAcceleration() const
+ {
+ return m_Acceleration;
+ }
+
+ virtual void SetAcceleration(fixed acceleration)
+ {
+ m_Acceleration = acceleration;
+ }
+
virtual pass_class_t GetPassabilityClass() const
{
return m_PassClass;
@@ -485,7 +513,7 @@
virtual fixed GetCurrentSpeed() const
{
- return m_CurSpeed;
+ return m_CurrentSpeed;
}
virtual void SetFacePointAfterMove(bool facePointAfterMove)
@@ -721,13 +749,13 @@
* This does not send actually change the position.
* @returns true if the move was obstructed.
*/
- bool PerformMove(fixed dt, const fixed& turnRate, WaypointPath& shortPath, WaypointPath& longPath, CFixedVector2D& pos, entity_angle_t& angle) const;
+ bool PerformMove(fixed dt, const fixed& turnRate, WaypointPath& shortPath, WaypointPath& longPath, CFixedVector2D& pos, fixed& speed, entity_angle_t& angle) const;
/**
* Update other components on our speed.
* (For performance, this should try to avoid sending messages).
*/
- void UpdateMovementState(entity_pos_t speed);
+ void UpdateMovementState(entity_pos_t speed, entity_pos_t meanSpeed);
/**
* React if our move was obstructed.
@@ -993,7 +1021,7 @@
// If we were idle and will still be, no need for an update.
state.needUpdate = state.cmpPosition->IsInWorld() &&
- (m_CurSpeed != fixed::Zero() || m_MoveRequest.m_Type != MoveRequest::NONE);
+ (m_CurrentSpeed != fixed::Zero() || m_MoveRequest.m_Type != MoveRequest::NONE);
if (!m_BlockMovement)
return;
@@ -1017,7 +1045,7 @@
// to it, then throw away our current path and go straight to it.
state.wentStraight = TryGoingStraightToTarget(state.initialPos, true);
- state.wasObstructed = PerformMove(dt, state.cmpPosition->GetTurnRate(), m_ShortPath, m_LongPath, state.pos, state.angle);
+ state.wasObstructed = PerformMove(dt, state.cmpPosition->GetTurnRate(), m_ShortPath, m_LongPath, state.pos, state.speed, state.angle);
}
void CCmpUnitMotion::PostMove(CCmpUnitMotionManager::MotionState& state, fixed dt)
@@ -1027,7 +1055,7 @@
{
if (state.angle != state.initialAngle)
state.cmpPosition->TurnTo(state.angle);
- UpdateMovementState(fixed::Zero());
+ UpdateMovementState(fixed::Zero(), fixed::Zero());
}
else
{
@@ -1041,7 +1069,7 @@
state.cmpPosition->MoveAndTurnTo(state.pos.X, state.pos.Y, state.angle);
// Calculate the mean speed over this past turn.
- UpdateMovementState(offset.Length() / dt);
+ UpdateMovementState(state.speed, offset.Length() / dt);
}
if (state.wasObstructed && HandleObstructedMove(state.pos != state.initialPos))
@@ -1094,7 +1122,7 @@
return false;
}
-bool CCmpUnitMotion::PerformMove(fixed dt, const fixed& turnRate, WaypointPath& shortPath, WaypointPath& longPath, CFixedVector2D& pos, entity_angle_t& angle) const
+bool CCmpUnitMotion::PerformMove(fixed dt, const fixed& turnRate, WaypointPath& shortPath, WaypointPath& longPath, CFixedVector2D& pos, fixed& speed, entity_angle_t& angle) const
{
// If there are no waypoint, behave as though we were obstructed and let HandleObstructedMove handle it.
if (shortPath.m_Waypoints.empty() && longPath.m_Waypoints.empty())
@@ -1151,21 +1179,26 @@
target = CFixedVector2D(shortPath.m_Waypoints.back().x, shortPath.m_Waypoints.back().z);
CFixedVector2D offset = target - pos;
- if (turnRate > zero && !offset.IsZero())
- {
- fixed maxRotation = turnRate.Multiply(timeLeft);
- fixed angleDiff = angle - atan2_approx(offset.X, offset.Y);
- if (angleDiff != zero)
+
+ fixed angleDiff = angle - atan2_approx(offset.X, offset.Y);
+ fixed absoluteAngleDiff = angleDiff.Absolute();
+ if (absoluteAngleDiff > entity_angle_t::Pi())
+ absoluteAngleDiff = entity_angle_t::Pi() * 2 - absoluteAngleDiff;
+
+ // We only rotate to the instantTurnAngle angle. The rest we rotate during movement.
+ if (absoluteAngleDiff > m_InstantTurnAngle)
+ {
+ // Stop moving when rotating this far.
+ speed = zero;
+ if (turnRate > zero && !offset.IsZero())
{
- fixed absoluteAngleDiff = angleDiff.Absolute();
- if (absoluteAngleDiff > entity_angle_t::Pi())
- absoluteAngleDiff = entity_angle_t::Pi() * 2 - absoluteAngleDiff;
+ fixed maxRotation = turnRate.Multiply(timeLeft);
// Figure out whether rotating will increase or decrease the angle, and how far we need to rotate in that direction.
int direction = (entity_angle_t::Zero() < angleDiff && angleDiff <= entity_angle_t::Pi()) || angleDiff < -entity_angle_t::Pi() ? -1 : 1;
// Can't rotate far enough, just rotate in the correct direction.
- if (absoluteAngleDiff > maxRotation)
+ if (absoluteAngleDiff - m_InstantTurnAngle > maxRotation)
{
angle += maxRotation * direction;
if (angle * direction > entity_angle_t::Pi())
@@ -1174,13 +1207,21 @@
}
// Rotate towards the next waypoint and continue moving.
angle = atan2_approx(offset.X, offset.Y);
- // Give some 'free' rotation for angles below 0.5 radians.
- timeLeft = (std::min(maxRotation, maxRotation - absoluteAngleDiff + fixed::FromInt(1)/2)) / turnRate;
+ timeLeft = std::min(maxRotation, maxRotation - absoluteAngleDiff + m_InstantTurnAngle) / turnRate;
}
}
+ else
+ {
+ // Modify the speed depending on the angle difference.
+ fixed sin, cos;
+ sincos_approx(angleDiff, sin, cos);
+ speed = speed.Multiply(cos);
+ }
// Work out how far we can travel in timeLeft.
- fixed maxdist = maxSpeed.Multiply(timeLeft);
+ fixed accelTime = std::min(timeLeft, (maxSpeed - speed) / m_Acceleration);
+ fixed accelDist = speed.Multiply(accelTime) + accelTime.Square().Multiply(m_Acceleration) / 2;
+ fixed maxdist = accelDist + maxSpeed.Multiply(timeLeft - accelTime);
// If the target is close, we can move there directly.
fixed offsetLength = offset.Length();
@@ -1191,7 +1232,20 @@
pos = target;
// Spend the rest of the time heading towards the next waypoint.
- timeLeft = (maxdist - offsetLength) / maxSpeed;
+ // Either we still need to accelerate after, or we have reached maxSpeed.
+ // The former is much less likely than the latter: usually we can reach
+ // maxSpeed within one waypoint. So the Sqrt is not too bad.
+ if (offsetLength <= accelDist)
+ {
+ fixed requiredTime = (-speed + (speed.Square() + offsetLength.Multiply(m_Acceleration).Multiply(fixed::FromInt(2))).Sqrt()) / m_Acceleration;
+ timeLeft -= requiredTime;
+ speed += m_Acceleration.Multiply(requiredTime);
+ }
+ else
+ {
+ timeLeft -= accelTime + (offsetLength - accelDist) / maxSpeed;
+ speed = maxSpeed;
+ }
if (shortPath.m_Waypoints.empty())
longPath.m_Waypoints.pop_back();
@@ -1212,6 +1266,8 @@
offset.Normalize(maxdist);
target = pos + offset;
+ speed = std::min(maxSpeed, speed + m_Acceleration.Multiply(timeLeft));
+
if (cmpPathfinder->CheckMovement(GetObstructionFilter(specificIgnore), pos.X, pos.Y, target.X, target.Y, m_Clearance, m_PassClass))
pos = target;
else
@@ -1223,18 +1279,18 @@
return false;
}
-void CCmpUnitMotion::UpdateMovementState(entity_pos_t speed)
+void CCmpUnitMotion::UpdateMovementState(entity_pos_t speed, entity_pos_t meanSpeed)
{
CmpPtr cmpVisual(GetEntityHandle());
if (cmpVisual)
{
- if (speed == fixed::Zero())
+ if (meanSpeed == fixed::Zero())
cmpVisual->SelectMovementAnimation("idle", fixed::FromInt(1));
else
- cmpVisual->SelectMovementAnimation(speed > (m_WalkSpeed / 2).Multiply(m_RunMultiplier + fixed::FromInt(1)) ? "run" : "walk", speed);
+ cmpVisual->SelectMovementAnimation(meanSpeed > (m_WalkSpeed / 2).Multiply(m_RunMultiplier + fixed::FromInt(1)) ? "run" : "walk", meanSpeed);
}
- m_CurSpeed = speed;
+ m_CurrentSpeed = speed;
}
bool CCmpUnitMotion::HandleObstructedMove(bool moved)
Index: ps/trunk/source/simulation2/components/CCmpUnitMotionManager.h
===================================================================
--- ps/trunk/source/simulation2/components/CCmpUnitMotionManager.h
+++ ps/trunk/source/simulation2/components/CCmpUnitMotionManager.h
@@ -60,6 +60,8 @@
// Accumulated "pushing" from nearby units.
CFixedVector2D push;
+ fixed speed;
+
fixed initialAngle;
fixed angle;
Index: ps/trunk/source/simulation2/components/CCmpUnitMotion_System.cpp
===================================================================
--- ps/trunk/source/simulation2/components/CCmpUnitMotion_System.cpp
+++ ps/trunk/source/simulation2/components/CCmpUnitMotion_System.cpp
@@ -167,6 +167,7 @@
it->second.initialPos = it->second.cmpPosition->GetPosition2D();
it->second.initialAngle = it->second.cmpPosition->GetRotation().Y;
it->second.pos = it->second.initialPos;
+ it->second.speed = it->second.cmpUnitMotion->GetCurrentSpeed();
it->second.angle = it->second.initialAngle;
ENSURE(it->second.pos.X.ToInt_RoundToZero() / PUSHING_GRID_SIZE < m_MovingUnits.width() &&
it->second.pos.Y.ToInt_RoundToZero() / PUSHING_GRID_SIZE < m_MovingUnits.height());
Index: ps/trunk/source/simulation2/components/ICmpUnitMotion.h
===================================================================
--- ps/trunk/source/simulation2/components/ICmpUnitMotion.h
+++ ps/trunk/source/simulation2/components/ICmpUnitMotion.h
@@ -87,7 +87,7 @@
virtual void StopMoving() = 0;
/**
- * Get the distance travelled over the last turn.
+ * Get the speed at the end of the current turn.
*/
virtual fixed GetCurrentSpeed() const = 0;
@@ -130,6 +130,17 @@
virtual CFixedVector2D EstimateFuturePosition(const fixed dt) const = 0;
/**
+ * Get the current acceleration.
+ */
+ virtual fixed GetAcceleration() const = 0;
+
+ /**
+ * Set the current acceleration.
+ * @param acceleration The acceleration.
+ */
+ virtual void SetAcceleration(fixed acceleration) = 0;
+
+ /**
* Set whether the unit will turn to face the target point after finishing moving.
*/
virtual void SetFacePointAfterMove(bool facePointAfterMove) = 0;
Index: ps/trunk/source/simulation2/components/ICmpUnitMotion.cpp
===================================================================
--- ps/trunk/source/simulation2/components/ICmpUnitMotion.cpp
+++ ps/trunk/source/simulation2/components/ICmpUnitMotion.cpp
@@ -37,6 +37,8 @@
DEFINE_INTERFACE_METHOD("GetRunMultiplier", ICmpUnitMotion, GetRunMultiplier)
DEFINE_INTERFACE_METHOD("EstimateFuturePosition", ICmpUnitMotion, EstimateFuturePosition)
DEFINE_INTERFACE_METHOD("SetSpeedMultiplier", ICmpUnitMotion, SetSpeedMultiplier)
+DEFINE_INTERFACE_METHOD("GetAcceleration", ICmpUnitMotion, GetAcceleration)
+DEFINE_INTERFACE_METHOD("SetAcceleration", ICmpUnitMotion, SetAcceleration)
DEFINE_INTERFACE_METHOD("GetPassabilityClassName", ICmpUnitMotion, GetPassabilityClassName)
DEFINE_INTERFACE_METHOD("GetUnitClearance", ICmpUnitMotion, GetUnitClearance)
DEFINE_INTERFACE_METHOD("SetFacePointAfterMove", ICmpUnitMotion, SetFacePointAfterMove)
@@ -124,6 +126,16 @@
return m_Script.Call("EstimateFuturePosition", dt);
}
+ virtual fixed GetAcceleration() const
+ {
+ return m_Script.Call("GetAcceleration");
+ }
+
+ virtual void SetAcceleration(fixed acceleration)
+ {
+ m_Script.CallVoid("SetAcceleration", acceleration);
+ }
+
virtual void SetFacePointAfterMove(bool facePointAfterMove)
{
m_Script.CallVoid("SetFacePointAfterMove", facePointAfterMove);