From 80eb4f44caf843503bf8f7f5488005af18da1c80 Mon Sep 17 00:00:00 2001 From: ThorstenB Date: Sun, 10 Oct 2010 14:05:42 +0200 Subject: [PATCH 1/8] Fixed "Position aircraft in air" in dialog. Setting a parking position (e.g. by default via command-line) caused "Position aircraft in air" to not work as expected. The "parkpos" property must be reset, otherwise heading/glidepath/azimuth do not have any effect when repositioning. --- gui/dialogs/location-in-air.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gui/dialogs/location-in-air.xml b/gui/dialogs/location-in-air.xml index 63e104414..ce16f3fae 100644 --- a/gui/dialogs/location-in-air.xml +++ b/gui/dialogs/location-in-air.xml @@ -260,6 +260,8 @@ nasal + + + + nasal + + + + + + + w + Walk view: Walk forward. + + nasal + + + + + nasal + + + + + + + d + Walk view: Side step right. + true + + nasal + + + + + nasal + + + + + + + D + Walk view: Fast side step right. + true + + nasal + + + + + nasal + + + + + + + a + Walk view: Side step left. + true + + nasal + + + + + nasal + + + + + + A + Walk view: Fast side step left. + true + + nasal + + + + + nasal + + + + + + + s + Walk view: Walk backwards. + + nasal + + + + + nasal + + + + + + + + diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas index cecd081c6..105015900 100644 --- a/Aircraft/Generic/WalkView/walkview.nas +++ b/Aircraft/Generic/WalkView/walkview.nas @@ -100,7 +100,8 @@ var active_walker = func { # NOTES: # Currently there can only be one view manager per view so the # walk view should not have any other view manager. -# +# See Aircraft/Nordstern, Aircraft/Short_Empire or Aircraft/ZLT-NT +# for working examples of walk views. var walker = { new : func (view_name, constraints = nil, managers = nil) { var obj = { parents : [walker] }; @@ -124,7 +125,7 @@ var walker = { view.manager.register(view_name, obj); walkers[obj.view.getPath()] = obj; - debug.dump(obj); + #debug.dump(obj); return obj; }, active : func { @@ -216,6 +217,8 @@ var walker = { ############################################################################### # Constraint classes. Determines where the view can walk. +# + # The union of two constraints. # c1, c2 - the constraints : constraint From e00d8d30ea3c36875c7fd70b36ca6e91beb106dc Mon Sep 17 00:00:00 2001 From: Detlef Faber Date: Sun, 31 Oct 2010 16:36:20 +0100 Subject: [PATCH 3/8] generic logos: add Logo of the day >:) --- Aircraft/Generic/Logos/pumpkin.png | Bin 0 -> 57809 bytes Aircraft/Generic/Logos/pumpkin.xml | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 Aircraft/Generic/Logos/pumpkin.png create mode 100644 Aircraft/Generic/Logos/pumpkin.xml diff --git a/Aircraft/Generic/Logos/pumpkin.png b/Aircraft/Generic/Logos/pumpkin.png new file mode 100644 index 0000000000000000000000000000000000000000..98edaa7b7ec2a54d7b01add92a9e9c8d51b90013 GIT binary patch literal 57809 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 + + + + + + Pumpkin + ../../Generic/Logos/pumpkin.png + + + + From 4692db87d6504664b724fce62792f78d9e1bc561 Mon Sep 17 00:00:00 2001 From: Anders Gidenstam Date: Sun, 31 Oct 2010 22:06:44 +0100 Subject: [PATCH 4/8] Updated WalkView: Added a more general area constraint: linePlane. --- Aircraft/Generic/WalkView/walkview.nas | 94 +++++++++++++++++++++----- 1 file changed, 77 insertions(+), 17 deletions(-) diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas index 105015900..8ed1bb61f 100644 --- a/Aircraft/Generic/WalkView/walkview.nas +++ b/Aircraft/Generic/WalkView/walkview.nas @@ -97,11 +97,12 @@ var active_walker = func { # [19.5, 0.3, -8.85]); # var walker = walkview.walker.new("Passenger View", constraint); # +# See Aircraft/Nordstern, Aircraft/Short_Empire and Aircraft/ZLT-NT +# for working examples of walk views. +# # NOTES: # Currently there can only be one view manager per view so the # walk view should not have any other view manager. -# See Aircraft/Nordstern, Aircraft/Short_Empire or Aircraft/ZLT-NT -# for working examples of walk views. var walker = { new : func (view_name, constraints = nil, managers = nil) { var obj = { parents : [walker] }; @@ -259,26 +260,55 @@ var makeUnionConstraint = func (cs) { return ret; } +# Rectangular plane defined by a straight line and a width. +# The line is extruded horizontally on each side by width/2 into a +# planar surface. +# p1, p2 - the line endpoints. +# width - total width of the plane. +var linePlane = { + new : func (p1, p2, width) { + var obj = { parents : [linePlane] }; + obj.p1 = p1; + obj.p2 = p2; + obj.halfwidth = width/2; + obj.length = vec2.length(vec2.sub(p2, p1)); + obj.e1 = vec2.normalize(vec2.sub(p2, p1)); + obj.e2 = [obj.e1[1], -obj.e1[0]]; + obj.k = (p2[2] - p1[2]) / obj.length; + + return obj; + }, + constrain : func (pos) { + var p = [pos[0], pos[1], pos[2]]; + var pXY = vec2.sub(pos, me.p1); + var along = vec2.dot(pXY, me.e1); + var across = vec2.dot(pXY, me.e2); + + var along2 = max(0, min(along, me.length)); + var across2 = max(-me.halfwidth, min(across, me.halfwidth)); + if (along2 != along or across2 != across) { + # Compute new XY position. + var t = vec2.add(vec2.mul(along2, me.e1), vec2.mul(across2, me.e2)); + p[0] = me.p1[0] + t[0]; + p[1] = me.p1[1] + t[1]; + } + + # Compute Z positition. + p[2] = me.p1[2] + me.k * along2; + return p; + } +}; + # Mostly aligned plane sloping along the X axis. +# NOTE: Obsolete. Use linePlane instead. # minp - the X,Y minimum point : position (meter) # maxp - the X,Y maximum point : position (meter) var slopingYAlignedPlane = { new : func (minp, maxp) { - var obj = { parents : [slopingYAlignedPlane] }; - obj.minp = minp; - obj.maxp = maxp; - obj.kxz = (maxp[2] - minp[2])/(maxp[0] - minp[0]); - return obj; - }, - constrain : func (pos) { - var p = [pos[0], pos[1], pos[2]]; - if (pos[0] < me.minp[0]) p[0] = me.minp[0]; - if (pos[0] > me.maxp[0]) p[0] = me.maxp[0]; - if (pos[1] < me.minp[1]) p[1] = me.minp[1]; - if (pos[1] > me.maxp[1]) p[1] = me.maxp[1]; - p[2] = me.minp[2] + me.kxz * (pos[0] - me.minp[0]); - return p; - }, + return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]], + [maxp[0], (minp[1] + maxp[1])/2, maxp[2]], + (maxp[1] - minp[1])); + } }; # Action constraint @@ -369,3 +399,33 @@ var closerXY = func (pos, p1, p2) { var l2 = [p2[0] - pos[0], p2[1] - pos[1]]; return (l1[0]*l1[0] + l1[1]*l1[1]) - (l2[0]*l2[0] + l2[1]*l2[1]); } + +var max = func (a, b) { + return b > a ? b : a; +} +var min = func (a, b) { + return a > b ? b : a; +} + +# 2D vector math. +var vec2 = { + add : func (a, b) { + return [a[0] + b[0], a[1] + b[1]]; + }, + sub : func (a, b) { + return [a[0] - b[0], a[1] - b[1]]; + }, + mul : func (k, a) { + return [k * a[0], k * a[1]]; + }, + length : func (a) { + return math.sqrt(a[0]*a[0] + a[1]*a[1]); + }, + dot : func (a, b) { + return a[0]*b[0] + a[1]*b[1]; + }, + normalize : func (a) { + var s = 1/vec2.length(a); + return [s * a[0], s * a[1]]; + } +} From 5612cd36dde115425da9e4e35ceb7ed1ce7bbc7a Mon Sep 17 00:00:00 2001 From: ThorstenB Date: Mon, 1 Nov 2010 17:47:08 +0100 Subject: [PATCH 5/8] Horse/cow (scenery) culling... Removed since this caused severe scenery (un)loading issues with osg. Scenery nodes with too many parents cause extreme delays when unloading tiles. => Need a better cow/horse-herd implementation! :) --- materials.xml | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/materials.xml b/materials.xml index e3f79bf99..828bc5cdf 100644 --- a/materials.xml +++ b/materials.xml @@ -1320,6 +1320,9 @@ Shared parameters for various materials. random + 1000000.0 20000.0 4000.0 @@ -1383,6 +1386,9 @@ Shared parameters for various materials. random + 500000.0 Textures/Trees/mixed-summer.png 8 @@ -1444,6 +1450,9 @@ Shared parameters for various materials. random + 500000.0 20000.0 5000.0 @@ -2140,6 +2149,9 @@ Shared parameters for various materials. random + 1000000.0 20000.0 4000.0 @@ -2202,6 +2214,9 @@ Shared parameters for various materials. random + 150000.0 10000.0 5000.0 @@ -2264,6 +2279,9 @@ Shared parameters for various materials. random + 150000.0 10000.0 5000.0 From 4c694b2bc2a830550a14b2082aad360d517573be Mon Sep 17 00:00:00 2001 From: Anders Gidenstam Date: Mon, 1 Nov 2010 21:12:39 +0100 Subject: [PATCH 6/8] Updated WalkView: Added a circular surface constraint. --- Aircraft/Generic/WalkView/walkview.nas | 38 ++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas index 8ed1bb61f..239ab575c 100644 --- a/Aircraft/Generic/WalkView/walkview.nas +++ b/Aircraft/Generic/WalkView/walkview.nas @@ -83,7 +83,8 @@ var active_walker = func { # speed ... speed in m/sec : double # # set_pos(pos) -# get_pos() : position +# pos ... position in meter : [double, double, double] +# get_pos() : position ([meter, meter, meter]) # # set_eye_height(h) # get_eye_height() : int (meter) @@ -263,8 +264,8 @@ var makeUnionConstraint = func (cs) { # Rectangular plane defined by a straight line and a width. # The line is extruded horizontally on each side by width/2 into a # planar surface. -# p1, p2 - the line endpoints. -# width - total width of the plane. +# p1, p2 - the line endpoints. : position ([meter, meter, meter]) +# width - total width of the plane. : length (meter) var linePlane = { new : func (p1, p2, width) { var obj = { parents : [linePlane] }; @@ -283,7 +284,7 @@ var linePlane = { var pXY = vec2.sub(pos, me.p1); var along = vec2.dot(pXY, me.e1); var across = vec2.dot(pXY, me.e2); - + var along2 = max(0, min(along, me.length)); var across2 = max(-me.halfwidth, min(across, me.halfwidth)); if (along2 != along or across2 != across) { @@ -299,10 +300,35 @@ var linePlane = { } }; +# Circular surface aligned with the XY plane +# center - the center point : position ([meter, meter, meter]) +# radius - radius in the XY plane : length (meter) +var CircularXYSurface = { + new : func (center, radius) { + var obj = { parents : [CircularXYSurface] }; + obj.center = center; + obj.radius = radius; + + return obj; + }, + constrain : func (pos) { + var p = [pos[0], pos[1], me.center[2]]; + var pXY = vec2.sub(pos, me.center); + var lXY = vec2.length(pXY); + + if (lXY > me.radius) { + var t = vec2.add(me.center, vec2.mul(me.radius/lXY, pXY)); + p[0] = t[0]; + p[1] = t[1]; + } + return p; + }, +}; + # Mostly aligned plane sloping along the X axis. # NOTE: Obsolete. Use linePlane instead. -# minp - the X,Y minimum point : position (meter) -# maxp - the X,Y maximum point : position (meter) +# minp - the X,Y minimum point : position ([meter, meter, meter]) +# maxp - the X,Y maximum point : position ([meter, meter, meter]) var slopingYAlignedPlane = { new : func (minp, maxp) { return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]], From 7b08e91f7b62c4b39ad7cc472f5c0e49233f17a6 Mon Sep 17 00:00:00 2001 From: Anders Gidenstam Date: Mon, 1 Nov 2010 21:31:15 +0100 Subject: [PATCH 7/8] Updated Walk View: Unified all "class"/"type" names to begin with a capital letter. --- Aircraft/Generic/WalkView/walkview.nas | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas index 239ab575c..c329f88dc 100644 --- a/Aircraft/Generic/WalkView/walkview.nas +++ b/Aircraft/Generic/WalkView/walkview.nas @@ -104,9 +104,9 @@ var active_walker = func { # NOTES: # Currently there can only be one view manager per view so the # walk view should not have any other view manager. -var walker = { +var Walker = { new : func (view_name, constraints = nil, managers = nil) { - var obj = { parents : [walker] }; + var obj = { parents : [Walker] }; obj.view = view.views[view.indexof(view_name)]; obj.constraints = constraints; obj.managers = managers; @@ -225,9 +225,9 @@ var walker = { # The union of two constraints. # c1, c2 - the constraints : constraint # NOTE: Assumes that the constraints are convex. -var unionConstraint = { +var UnionConstraint = { new : func (c1, c2) { - var obj = { parents : [unionConstraint] }; + var obj = { parents : [UnionConstraint] }; obj.c1 = c1; obj.c2 = c2; return obj; @@ -256,7 +256,7 @@ var makeUnionConstraint = func (cs) { var ret = cs[0]; for (var i = 1; i < size(cs); i += 1) { - ret = unionConstraint.new(ret, cs[i]); + ret = UnionConstraint.new(ret, cs[i]); } return ret; } @@ -266,9 +266,9 @@ var makeUnionConstraint = func (cs) { # planar surface. # p1, p2 - the line endpoints. : position ([meter, meter, meter]) # width - total width of the plane. : length (meter) -var linePlane = { +var LinePlane = { new : func (p1, p2, width) { - var obj = { parents : [linePlane] }; + var obj = { parents : [LinePlane] }; obj.p1 = p1; obj.p2 = p2; obj.halfwidth = width/2; @@ -329,9 +329,9 @@ var CircularXYSurface = { # NOTE: Obsolete. Use linePlane instead. # minp - the X,Y minimum point : position ([meter, meter, meter]) # maxp - the X,Y maximum point : position ([meter, meter, meter]) -var slopingYAlignedPlane = { +var SlopingYAlignedPlane = { new : func (minp, maxp) { - return linePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]], + return LinePlane.new([minp[0], (minp[1] + maxp[1])/2, minp[2]], [maxp[0], (minp[1] + maxp[1])/2, maxp[2]], (maxp[1] - minp[1])); } @@ -344,9 +344,9 @@ var slopingYAlignedPlane = { # on_exit(x, y) - function that is called when the walker leaves the area. # x and y are <0, 0 or >0 depending on in which direction(s) # the walker left the constraint. -var actionConstraint = { +var ActionConstraint = { new : func (constraint, on_enter = nil, on_exit = nil) { - var obj = { parents : [actionConstraint] }; + var obj = { parents : [ActionConstraint] }; obj.constraint = constraint; obj.on_enter = on_enter; obj.on_exit = on_exit; From 5ecdf0f8787b62b3f1b38d0c718fd3f52e2a19c0 Mon Sep 17 00:00:00 2001 From: Anders Gidenstam Date: Mon, 1 Nov 2010 22:44:10 +0100 Subject: [PATCH 8/8] Updated WalkView: Added a makePolylinePath convenience function. --- Aircraft/Generic/WalkView/walkview.nas | 49 +++++++++++++++++++------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/Aircraft/Generic/WalkView/walkview.nas b/Aircraft/Generic/WalkView/walkview.nas index c329f88dc..b7bad57c1 100644 --- a/Aircraft/Generic/WalkView/walkview.nas +++ b/Aircraft/Generic/WalkView/walkview.nas @@ -221,6 +221,43 @@ var Walker = { # Constraint classes. Determines where the view can walk. # +# Convenience functions. + +# Build a UnionConstraint hierarchy from a list of constraints. +# cs - list of constraints : [constraint] +var makeUnionConstraint = func (cs) { + if (size(cs) < 2) return cs[0]; + + var ret = cs[0]; + for (var i = 1; i < size(cs); i += 1) { + ret = UnionConstraint.new(ret, cs[i]); + } + return ret; +} + +# Build a UnionConstraint hierachy that represents a polyline path +# with a certain width. Each internal point gets a circular surface. +# points - list of points : [position] ([[meter, meter, meter]]) +# width - width of the path : length (meter) +# round_ends - put a circle also on the first and last points : bool +var makePolylinePath = func (points, width, round_ends = 0) { + if (size(points) < 2) return nil; + var ret = LinePlane.new(points[0], points[1], width); + if (round_ends) { + ret = UnionConstraint.new(line, + CircularXYSurface.new(points[0], width/2)); + } + for (var i = 2; i < size(points); i += 1) { + var line = LinePlane.new(points[i-1], points[i], width); + if (i + 1 < size(points) or round_ends) { + line = UnionConstraint.new + (line, + CircularXYSurface.new(points[i], width/2)); + } + ret = UnionConstraint.new(line, ret); + } + return ret; +} # The union of two constraints. # c1, c2 - the constraints : constraint @@ -249,18 +286,6 @@ var UnionConstraint = { } }; -# Build a unionConstraint hierarchy from a list of constraints. -# cs - list of constraints : [constraint] -var makeUnionConstraint = func (cs) { - if (size(cs) < 2) return cs[0]; - - var ret = cs[0]; - for (var i = 1; i < size(cs); i += 1) { - ret = UnionConstraint.new(ret, cs[i]); - } - return ret; -} - # Rectangular plane defined by a straight line and a width. # The line is extruded horizontally on each side by width/2 into a # planar surface.