From 246b4d1f467a26f36d57f6451e33650086167f2a Mon Sep 17 00:00:00 2001 From: Talon Date: Tue, 20 Apr 2021 15:57:44 +0200 Subject: [PATCH] First implementation of 3d radar --- .../DesignTimeBuild/.dtbcache.v2 | Bin 63152 -> 63152 bytes .vs/EvilSatellites/v16/.suo | Bin 107008 -> 106496 bytes EvilSatellites/Radar.cs | 57 +++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 b/.vs/EvilSatellites/DesignTimeBuild/.dtbcache.v2 index 58e9600368cc372cb802994fb64b503072434c1b..81c69e1200ebdc1fce4fbde8abe792b43ac94ce0 100644 GIT binary patch delta 77 zcmV~$u@S%^2mrvsMKS`Sz|m!dtNKS delta 77 zcmWN#Ls$-1 aHf=p>E5soLy3ByawP<&@pE97&*xnDJ!WU-% diff --git a/.vs/EvilSatellites/v16/.suo b/.vs/EvilSatellites/v16/.suo index 0dcd09aca09a30a3399429dcad943083f4d7f199..a18b445ceef953c34628e60742beb406acf546ed 100644 GIT binary patch delta 4286 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 delta 4627 zcmc&%dsLLw7N7k&Gt9sM@_xS*0d4ptP~aIGw_nZc%`M5B5}Q0YUOR!T4tCp>}ILleP)KDQdi#l$31KPW5Q3UAy*S&hDH)x)>I<-dG+JEE6@m-i<<@iM z9IhF(#`Zl@m%GvrH3fp$D_%t$S?QZkG{?e65S?w|-7J)i@h3i!;6$({Fr5p+7^h(^ z7Kv$Cn`DvQE!3Xq7`EO*)_atsQ3OXq0)gpR6BF+|KxVoj1LO$<_)y~G2vGxcw#3gR zcvok-!RYGDgi&&mh7+s^%vvDPIfNGoxrBv;7YU09YpOHTpb)>6thb&2Flr<7;s{dz z(TgQ-k-FcD%qnX#(mgP~2LjvBNTNzY7-0{gKLBiKILT^) zWm;b(@nZ?m1QvjCgct$~K&)uINEA=Zzz9qvc^9GIfH(1z3CV;MLMkDhFd9e66I}X7 zG5Qi|868@k>4kN2mF-GWG6BGnn!b4PB`w1D=4WP63{xhTO zlEtIRDh^Hwc|&6doE$LUzF6^qbS(8)(>;2O#54x)ITdm;n&e!}SpojwTnzVdrAvu4 zk7n)#{K+i^Pq>Dm#(kWGs|vzl?OskgMc}H^h|Z86YdJ1Z)+ssIN|Sv534i%4ARZKR%Q5-R`|FKkqiz z>+@-MfAniNnK_dZVVFn}N+dh%a++hAV9EeV1u4!8_cE&cC@~z9WT2&MG4IlE!xv1qQW)gqeu}do)aJZS(iWg^w%k$o=j*OqSxT6u} zS!veo>ptk5<-KA?ORF#~>(C&>OYPu~m${WQykpOwtG8RSEOy(bikXM6F1q@ePwM*t z!$xg5SEow}(9h-cNgSoB{-OAh*(x<>D?W_Qm#m|c4M;1S1tez?s9{d-Bq4FZF^Mk1 z-@mg%T6v{*bMl!5{|xB**+rAHr|(wx=KZbjCuj~0xe@$~5Eo$t{Sq{%ZKB4 zJFG#A%XTE<(QaFuQ4nGi5vEiXCFLw#v2Zo%WAMzoCcR=zxH2Nr+@Udb-2XzxCMd$y z%CX_*juPrn8(ua7+`!|njKqdloOO9NpvPl*D;-`DEf6iCuk{Ne4HbjgqVarv68Jze zD)J6P4I47@_e1hTOR40nrb)|1<{C1SPE5HhO4cPh2UO{Gx&uePJb%6J{-H^l3n_t> zD`Vens+nGtk`Uj1YGFOQQ9^R!QNYVaPxD?Qm1ClR-D?caU+aqg<-yjf{zDg=&gN6+ zh{s+J5l2NUBXIGKbUeG?7ALocD8izYVQRAhHZl#P$v4LdaX6sbDiM3XiEz4R6mPVLEc`?>LWtA!aJc-A zv%W)YDx-DT;492n-T*eSndZlvzvu%zeqJJBO9k6@vYiLeRItD3waZ@Jm};G&VvRZaLiAq6oDzD$0Bw$^~qy zcfz=KBiRkgSdgH=}Wo4wI}&>pCwoyst6 zW2A7ci9Xt|>1*)lTD4HLUkdQCpZxFOci=nHthu15H}HV8nD)p{LX(OF^1tC2$R zAt{)Sg%|c*bzsk>{>EybhtO5m3g9ek)n76VGauaktp|9=ko(xWioK`19#Ku%!^~7o zeqT+6-j5UGL4%q5l|tFO>o_>emwLc!_(fT?pnkIsn4g55M^zxKJ8%);BnwXko~;}wY&R~Y ziud*iQxIya)WV|fudML+PE*YA!?(M!z0O+UZ)D${077CL3yE;yqQ8B!7>x4&?m~M! z_CjOSvbj&r{3j-Q3nluzK`hf-+`J%1@-*2fq}6t?{Hyq5RtXpO2%IT@N+rL~(9+Um z4BH-o8M{L9`D+(Vk4?hUq&S2bIKq}cPj(~-f;(xk6!^3uyUIN`qx|W%gSI<%jab<6tL-?8Z;-E+RAYI zHb5P}EE87p#w74Y)m>-2eW!u%$cB7AW)=+QWuf3{9^!?&K07!dC12yOWWy4aMtBYq ziKG~RcPBq26!tyxp(9Boa!khOPuZPlz;hgZ{|e0Djw)s Va;>JACjZIvwsh`*aPDcW{|Co{rTYK? diff --git a/EvilSatellites/Radar.cs b/EvilSatellites/Radar.cs index 77edaef..8f87568 100644 --- a/EvilSatellites/Radar.cs +++ b/EvilSatellites/Radar.cs @@ -16,15 +16,20 @@ namespace EvilSatellites public IGameObject Owner; public IGameObject Target; public IScreen Screen; - public ISoundEffect RadarNoise; + public ISoundEffect3D RadarNoise; public ObjectType Filter; + public Vector3 RadarDirection; + public Vector3 RadarPosition; + public bool IsPlaying; + public Vector3 RadarTarget; public Radar(IGameObject owner, IScreen screen) { Owner = owner; Screen = screen; - RadarNoise = Screen.Manager.Sound.Load(@"sfx/ui/radar/pingEnemy.wav", false); + RadarNoise = Screen.Manager.Sound.Load3D(@"sfx/ui/radar/pingEnemy.wav"); RadarNoise.Loop = true; Filter = ObjectType.Satellite; + Active = false; } @@ -46,7 +51,7 @@ namespace EvilSatellites Active = false; } - public void Update(List objects) + public void UpdateX(List objects) { if (objects.Count < 1) return; float minDistance = 50000000; @@ -70,5 +75,51 @@ namespace EvilSatellites radarTarget.Normalize(); RadarNoise.Pitch = MathHelper.Clamp(0.1f / Vector3.Distance(Owner.Rotation.Forward, radarTarget) * 3f, 0, 1); } + + + public void Update(List objects) + { + if (IsPlaying) + { + RadarPosition += RadarDirection; + RadarNoise.Position = new System.Numerics.Vector3(RadarPosition.X, RadarPosition.Y, RadarPosition.Z); + RadarNoise.Pitch = MathHelper.Clamp(0.1f / Vector3.Distance(Owner.Rotation.Forward, RadarTarget) * 3f, 0, 2); + if (Vector3.Distance(RadarPosition, Owner.Position) > 20) + { + IsPlaying = false; + } + } else + { + if (objects.Count < 1) return; + float minDistance = 50000000; + Target = null; + foreach (var obj in objects) + { + if (obj.Type != Filter) continue; + float distance = Vector3.Distance(obj.Position, Owner.Position); + if (distance < minDistance) + { + minDistance = distance; + Target = obj; + } + } + if (Target == null) + { + // RadarNoise.Pitch = 0.1; + return; + } + Vector3 radarTarget = (Target.Position - Owner.Position); + radarTarget.Normalize(); + RadarTarget = radarTarget; + RadarPosition = new Vector3(Owner.Position.X+Owner.Dimensions.X/2, Owner.Position.Y+Owner.Dimensions.Y/2, Owner.Position.Z+Owner.Dimensions.Z/2); + RadarDirection = new Vector3(radarTarget.X*0.5f, radarTarget.Y*0.5f, radarTarget.Z*0.5f); + + RadarNoise.Reset(); + // RadarNoise.Play(); + IsPlaying = true; + // RadarNoise.Pitch = MathHelper.Clamp(0.1f / Vector3.Distance(Owner.Rotation.Forward, radarTarget) * 3f, 0, 1); + } + } + } }