diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.cpp index f649e09249..a3650b4f5a 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.cpp @@ -19,10 +19,10 @@ bool (*SetSegmentationObjectId)(const char* meshName, int objectId, bool isNameR int (*GetSegmentationObjectId)(const char* meshName); bool (*PrintLogMessage)(const char* message, const char* messageParam, const char* vehicleName, int severity); UnityTransform (*GetTransformFromUnity)(const char* vehicleName); -bool (*Reset)(const char* vehicleName); +bool (*Reset)(); AirSimVector (*GetVelocity)(const char* vehicleName); RayCastHitResult (*GetRayCastHit)(AirSimVector startVec, AirSimVector endVec, const char* vehicleName); -bool (*Pause)(const char* vehicleName, float timeScale); +bool (*Pause)(float timeScale); void InitVehicleManager( bool (*setPose)(AirSimPose pose, bool ignoreCollision, const char* vehicleName), @@ -43,10 +43,10 @@ void InitVehicleManager( int (*getSegmentationObjectId)(const char* meshName), bool (*printLogMessage)(const char* message, const char* messageParam, const char* vehicleName, int severity), UnityTransform (*getTransformFromUnity)(const char* vehicleName), - bool (*reset)(const char* vehicleName), + bool (*reset)(), AirSimVector (*getVelocity)(const char* vehicleName), RayCastHitResult (*getRayCastHit)(AirSimVector startVec, AirSimVector endVec, const char* vehicleName), - bool (*pause)(const char* vehicleName, float timeScale)) + bool (*pause)(float timeScale)) { SetPose = setPose; GetPose = getPose; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.h b/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.h index 79f84d5c8a..ff18da1cfe 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/PInvokeWrapper.h @@ -32,10 +32,10 @@ extern bool (*SetSegmentationObjectId)(const char* meshName, int objectId, bool extern int (*GetSegmentationObjectId)(const char* meshName); extern bool (*PrintLogMessage)(const char* message, const char* messageParam, const char* vehicleName, int severity); extern UnityTransform (*GetTransformFromUnity)(const char* vehicleName); -extern bool (*Reset)(const char* vehicleName); +extern bool (*Reset)(); extern AirSimVector (*GetVelocity)(const char* vehicleName); extern RayCastHitResult (*GetRayCastHit)(AirSimVector startVec, AirSimVector endVec, const char* vehicleName); -extern bool (*Pause)(const char* vehicleName, float timeScale); +extern bool (*Pause)(float timeScale); // PInvoke call to initialize the function pointers. This function is called from Unity. @@ -58,7 +58,7 @@ extern "C" EXPORT void InitVehicleManager( int (*getSegmentationObjectId)(const char* meshName), bool (*printLogMessage)(const char* message, const char* messageParam, const char* vehicleName, int severity), UnityTransform (*getTransformFromUnity)(const char* vehicleName), - bool (*reset)(const char* vehicleName), + bool (*reset)(), AirSimVector (*getVelocity)(const char* vehicleName), RayCastHitResult (*getRayCastHit)(AirSimVector startVec, AirSimVector endVec, const char* vehicleName), - bool (*pause)(const char* vehicleName, float timeScale)); + bool (*pause)(float timeScale)); diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.cpp index 7e679794d0..3e3e46d4f4 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.cpp @@ -3,8 +3,8 @@ #include "../Vehicles/Car/SimModeCar.h" #include "../Vehicles/Multirotor/SimModeWorldMultiRotor.h" -SimHUD::SimHUD(std::string vehicle_name, std::string sim_mode_name, int port_number) - : vehicle_name_(vehicle_name), sim_mode_name_(sim_mode_name), port_number_(port_number) +SimHUD::SimHUD(std::string sim_mode_name, int port_number) + : sim_mode_name_(sim_mode_name), port_number_(port_number) { server_started_Successfully_ = false; } @@ -20,7 +20,7 @@ void SimHUD::BeginPlay() server_started_Successfully_ = true; } catch (std::exception& ex) { - PrintLogMessage("Error at startup: ", ex.what(), vehicle_name_.c_str(), ErrorLogSeverity::Error); + PrintLogMessage("Error at startup: ", ex.what(), "", ErrorLogSeverity::Error); } } @@ -75,10 +75,10 @@ void SimHUD::initializeSettings() AirSimSettings::singleton().load(std::bind(&SimHUD::getSimModeFromUser, this)); for (const auto& warning : AirSimSettings::singleton().warning_messages) { - PrintLogMessage(warning.c_str(), "LogDebugLevel::Failure", vehicle_name_.c_str(), ErrorLogSeverity::Error); + PrintLogMessage(warning.c_str(), "LogDebugLevel::Failure", "", ErrorLogSeverity::Error); } for (const auto& error : AirSimSettings::singleton().error_messages) { - PrintLogMessage(error.c_str(), "settings.json", vehicle_name_.c_str(), ErrorLogSeverity::Error); + PrintLogMessage(error.c_str(), "settings.json", "", ErrorLogSeverity::Error); } } @@ -107,9 +107,9 @@ void SimHUD::createSimMode() std::string simmode_name = AirSimSettings::singleton().simmode_name; if (simmode_name == "Multirotor") - simmode_ = new SimModeWorldMultiRotor(vehicle_name_, port_number_); + simmode_ = new SimModeWorldMultiRotor(port_number_); else if (simmode_name == "Car") - simmode_ = new SimModeCar(vehicle_name_, port_number_); + simmode_ = new SimModeCar(port_number_); simmode_->BeginPlay(); } @@ -134,11 +134,11 @@ bool SimHUD::readSettingsTextFromFile(std::string settingsFilepath, std::string& std::stringstream buffer; buffer << file.rdbuf(); settingsText = buffer.str(); - PrintLogMessage("Loaded settings from ", settingsFilepath.c_str(), vehicle_name_.c_str(), ErrorLogSeverity::Information); + PrintLogMessage("Loaded settings from ", settingsFilepath.c_str(), "", ErrorLogSeverity::Information); return true; } else { - PrintLogMessage("Cannot read settings file ", settingsFilepath.c_str(), vehicle_name_.c_str(), ErrorLogSeverity::Error); + PrintLogMessage("Cannot read settings file ", settingsFilepath.c_str(), "", ErrorLogSeverity::Error); } return false; } \ No newline at end of file diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.h b/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.h index 0901ee57d4..b6178273ae 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimHUD/SimHUD.h @@ -18,7 +18,7 @@ class SimHUD std::string getSimModeFromUser(); public: - SimHUD(std::string vehicle_name, std::string sime_mode_name, int port_number); + SimHUD(std::string sime_mode_name, int port_number); SimModeBase* GetSimMode(); ImageType getSubwindowCameraType(int window_index); void setSubwindowCameraType(int window_index, ImageType type); @@ -31,7 +31,6 @@ class SimHUD private: typedef common_utils::Utils Utils; SimModeBase* simmode_; - std::string vehicle_name_; std::string sim_mode_name_; int port_number_; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.cpp index 6cd9b4340e..4d1b597d48 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.cpp @@ -5,8 +5,8 @@ #include "../PInvokeWrapper.h" #include "../WorldSimApi.h" -SimModeBase::SimModeBase(std::string vehicle_name, int port_number) - : vehicle_name_(vehicle_name), port_number_(port_number) +SimModeBase::SimModeBase(int port_number) + : port_number_(port_number) { } @@ -15,7 +15,7 @@ void SimModeBase::BeginPlay() debug_reporter_.initialize(false); debug_reporter_.reset(); global_ned_transform_.reset(new NedTransform(GetVehicleStartTransform())); - world_sim_api_.reset(new WorldSimApi(this, vehicle_name_)); + world_sim_api_.reset(new WorldSimApi(this)); api_provider_.reset(new msr::airlib::ApiProvider(world_sim_api_.get())); setupClockSpeed(); record_tick_count = 0; @@ -24,7 +24,8 @@ void SimModeBase::BeginPlay() void SimModeBase::Tick(float DeltaSeconds) { - getVehicleSimApi(vehicle_name_)->pawnTick(DeltaSeconds); + for (auto& api : getApiProvider()->getVehicleSimApis()) + static_cast(api)->pawnTick(DeltaSeconds); showClockStats(); updateDebugReport(debug_reporter_); } @@ -35,7 +36,7 @@ void SimModeBase::showClockStats() if (clock_speed != 1) { PrintLogMessage("ClockSpeed config, actual: ", Utils::stringf("%f, %f", clock_speed, ClockFactory::get()->getTrueScaleWrtWallClock()).c_str(), - vehicle_name_.c_str(), + "", ErrorLogSeverity::Information); } } @@ -153,14 +154,14 @@ void SimModeBase::startApiServer() api_server_ = createApiServer(); #endif try { - api_server_->start(false, 4); //TODO: set thread for vehicle count + api_server_->start(false, vehicle_sim_apis_.size() + 4); //TODO: set thread for vehicle count } catch (std::exception& ex) { - PrintLogMessage("Cannot start RpcLib Server", ex.what(), vehicle_name_.c_str(), ErrorLogSeverity::Error); + PrintLogMessage("Cannot start RpcLib Server", ex.what(), "", ErrorLogSeverity::Error); } } else - PrintLogMessage("API server is disabled in settings", "", vehicle_name_.c_str(), ErrorLogSeverity::Information); + PrintLogMessage("API server is disabled in settings", "", "", ErrorLogSeverity::Information); } void SimModeBase::stopApiServer() { @@ -206,30 +207,35 @@ void SimModeBase::setupVehiclesAndCamera() { //determine camera director camera default pose and spawn it const auto& camera_director_setting = getSettings().camera_director; - UnityPawn* vehicle_pawn = GetVehiclePawn(); - const auto& home_geopoint = msr::airlib::EarthUtils::nedToGeodetic(GetVehiclePosition(), getSettings().origin_geopoint); + for (auto const& vehicle_setting_pair : getSettings().vehicles) { + const auto& vehicle_setting = *vehicle_setting_pair.second; + const std::string& vehicle_name = vehicle_setting.vehicle_name; - PawnSimApi::Params pawn_sim_api_params(vehicle_pawn, &getGlobalNedTransform(), home_geopoint, vehicle_name_); - auto vehicle_sim_api = createVehicleSimApi(pawn_sim_api_params); - auto vehicle_sim_api_p = vehicle_sim_api.get(); - auto vehicle_Api = getVehicleApi(pawn_sim_api_params, vehicle_sim_api_p); + UnityPawn* vehicle_pawn = GetVehiclePawn(vehicle_name); + const auto& home_geopoint = msr::airlib::EarthUtils::nedToGeodetic(GetVehiclePosition(vehicle_name), getSettings().origin_geopoint); - getApiProvider()->insert_or_assign(vehicle_name_, vehicle_Api, vehicle_sim_api_p); + PawnSimApi::Params pawn_sim_api_params(vehicle_pawn, &getGlobalNedTransform(), home_geopoint, vehicle_name); + auto vehicle_sim_api = createVehicleSimApi(pawn_sim_api_params); + auto vehicle_sim_api_p = vehicle_sim_api.get(); + auto vehicle_api = getVehicleApi(pawn_sim_api_params, vehicle_sim_api_p); - if ((!getApiProvider()->hasDefaultVehicle()) && vehicle_name_ != "") { - getApiProvider()->makeDefaultVehicle(vehicle_name_); + getApiProvider()->insert_or_assign(vehicle_name, vehicle_api, vehicle_sim_api_p); + + if ((!getApiProvider()->hasDefaultVehicle()) && vehicle_name != "") + getApiProvider()->makeDefaultVehicle(vehicle_name); + + vehicle_sim_apis_.push_back(std::move(vehicle_sim_api)); } - vehicle_sim_apis_.push_back(std::move(vehicle_sim_api)); } -const msr::airlib::Vector3r SimModeBase::GetVehiclePosition() +const msr::airlib::Vector3r SimModeBase::GetVehiclePosition(const std::string& vehicle_name) { - AirSimPose airSimPose = GetPose(vehicle_name_.c_str()); + AirSimPose airSimPose = GetPose(vehicle_name.c_str()); msr::airlib::Vector3r vehiclePosition(airSimPose.position.x, airSimPose.position.y, airSimPose.position.z); return vehiclePosition; } -UnityPawn* SimModeBase::GetVehiclePawn() +UnityPawn* SimModeBase::GetVehiclePawn(const std::string& vehicle_name) { return nullptr; } @@ -258,6 +264,7 @@ msr::airlib::VehicleApiBase* SimModeBase::getVehicleApi(const PawnSimApi::Params UnityTransform SimModeBase::GetVehicleStartTransform() { - UnityTransform unityTransform = GetTransformFromUnity(vehicle_name_.c_str()); + //can we just take origin in Unity here? + UnityTransform unityTransform; return unityTransform; } \ No newline at end of file diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.h b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.h index 0ccdc3e6d1..90bf6b73f3 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeBase.h @@ -21,7 +21,7 @@ class SimModeBase typedef msr::airlib::AirSimSettings AirSimSettings; private: - const msr::airlib::Vector3r GetVehiclePosition(); + const msr::airlib::Vector3r GetVehiclePosition(const std::string& vehicle_name); UnityTransform GetVehicleStartTransform(); void showClockStats(); @@ -30,14 +30,14 @@ class SimModeBase virtual bool isVehicleTypeSupported(const std::string& vehicle_type) const; virtual std::unique_ptr createVehicleSimApi(const PawnSimApi::Params& pawn_sim_api_params) const; virtual msr::airlib::VehicleApiBase* getVehicleApi(const PawnSimApi::Params& pawn_sim_api_params, const PawnSimApi* sim_api) const; - virtual UnityPawn* GetVehiclePawn(); + virtual UnityPawn* GetVehiclePawn(const std::string& vehicle_name); virtual void setupVehiclesAndCamera(); virtual void setupClockSpeed(); //called when SimMode should handle clock speed setting virtual void updateDebugReport(msr::airlib::StateReporterWrapper& debug_reporter); virtual const msr::airlib::AirSimSettings& getSettings() const; public: - SimModeBase(std::string vehicle_name, int port_number); + SimModeBase(int port_number); virtual void BeginPlay(); virtual void EndPlay(); virtual void Tick(float DeltaSeconds) = 0; @@ -85,7 +85,6 @@ class SimModeBase int record_tick_count; public: - std::string vehicle_name_; int port_number_; bool EnableReport = false; }; \ No newline at end of file diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.cpp index 2ba1e5a382..b205478575 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.cpp @@ -2,8 +2,8 @@ #include "SimModeWorldBase.h" #include "../PInvokeWrapper.h" -SimModeWorldBase::SimModeWorldBase(std::string multiRotorName, int port_number) - : SimModeBase(multiRotorName, port_number) +SimModeWorldBase::SimModeWorldBase(int port_number) + : SimModeBase(port_number) { } @@ -70,7 +70,7 @@ std::unique_ptr SimModeWorldBase::createPhy } else { physics_engine.reset(); - PrintLogMessage("Unrecognized physics engine name: ", physics_engine_name.c_str(), vehicle_name_.c_str(), ErrorLogSeverity::Warnning); + PrintLogMessage("Unrecognized physics engine name: ", physics_engine_name.c_str(), "", ErrorLogSeverity::Warnning); } return physics_engine; } diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.h b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.h index 86edbb9535..202426088c 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/SimMode/SimModeWorldBase.h @@ -26,7 +26,7 @@ class SimModeWorldBase : public SimModeBase void initializeForPlay(); public: - SimModeWorldBase(std::string multiRotorName, int port_number); + SimModeWorldBase(int port_number); virtual void BeginPlay() override; virtual void EndPlay() override; virtual void Tick(float DeltaSeconds) override; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.cpp index 2d6c2f830f..2ce52a46c8 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.cpp @@ -1,7 +1,7 @@ #include "UnityToAirSimCalls.h" -void StartServerThread(std::string vehicle_name, std::string sim_mode_name, int port_number) +void StartServerThread(std::string sim_mode_name, int port_number) { - key = new SimHUD(vehicle_name, sim_mode_name, port_number); + key = new SimHUD(sim_mode_name, port_number); key->BeginPlay(); } \ No newline at end of file diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.h b/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.h index 6f3c3951ee..d34f0e9eed 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/UnityToAirSimCalls.h @@ -13,12 +13,12 @@ static SimHUD* key = nullptr; -void StartServerThread(std::string vehicle_name, std::string sim_mode_name, int port_number); +void StartServerThread(std::string sim_mode_name, int port_number); -extern "C" EXPORT bool StartServer(char* vehicle_name, char* sim_mode_name, int port_number) +extern "C" EXPORT bool StartServer(char* sim_mode_name, int port_number) { LOGGER->WriteLog("Starting server for : " + std::string(sim_mode_name)); - std::thread server_thread(StartServerThread, vehicle_name, sim_mode_name, port_number); + std::thread server_thread(StartServerThread, sim_mode_name, port_number); server_thread.detach(); int waitCounter = 25; // waiting for maximum 5 seconds to start a server. while ((key == nullptr || !key->server_started_Successfully_) && waitCounter > 0) { @@ -28,7 +28,7 @@ extern "C" EXPORT bool StartServer(char* vehicle_name, char* sim_mode_name, int return key->server_started_Successfully_; } -extern "C" EXPORT void StopServer(char* vehicle_name) +extern "C" EXPORT void StopServer() { key->EndPlay(); if (key != nullptr) { @@ -43,11 +43,11 @@ extern "C" EXPORT void CallTick(float deltaSeconds) key->Tick(deltaSeconds); } -extern "C" EXPORT void InvokeCollisionDetection(AirSimUnity::AirSimCollisionInfo collision_info) +extern "C" EXPORT void InvokeCollisionDetection(char* vehicle_name, AirSimUnity::AirSimCollisionInfo collision_info) { auto simMode = key->GetSimMode(); if (simMode) { - auto vehicleApi = simMode->getVehicleSimApi(simMode->vehicle_name_); + auto vehicleApi = simMode->getVehicleSimApi(vehicle_name); if (vehicleApi) { msr::airlib::CollisionInfo collisionInfo = UnityUtilities::Convert_to_AirSimCollisioinInfo(collision_info); vehicleApi->OnCollision(collisionInfo); diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/CarPawnSimApi.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/CarPawnSimApi.cpp index 2bdaba78d7..c2188e408f 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/CarPawnSimApi.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/CarPawnSimApi.cpp @@ -158,7 +158,7 @@ void CarPawnSimApi::updateCarControls() void CarPawnSimApi::resetImplementation() { setPose(UnityUtilities::Convert_to_Pose(GetInitialPose()), false); - Reset(getVehicleName().c_str()); + Reset(); PawnSimApi::resetImplementation(); pawn_api_->reset(); diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.cpp index 1a1a8469be..391253ef51 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.cpp @@ -5,8 +5,8 @@ #include "vehicles/car/api/CarRpcLibServer.hpp" #include "../../PInvokeWrapper.h" -SimModeCar::SimModeCar(std::string car_name, int port_number) - : SimModeBase(car_name, port_number) +SimModeCar::SimModeCar(int port_number) + : SimModeBase(port_number) { } @@ -35,7 +35,7 @@ void SimModeCar::pause(bool is_paused) else current_clockspeed_ = getSettings().clock_speed; - Pause(vehicle_name_.c_str(), current_clockspeed_); + Pause(current_clockspeed_); } void SimModeCar::continueForTime(double seconds) @@ -81,14 +81,15 @@ bool SimModeCar::isVehicleTypeSupported(const std::string& vehicle_type) const return vehicle_type == AirSimSettings::kVehicleTypePhysXCar; } -UnityPawn* SimModeCar::GetVehiclePawn() +UnityPawn* SimModeCar::GetVehiclePawn(const std::string& vehicle_name) { - return new CarPawn(vehicle_name_); + return new CarPawn(vehicle_name); } std::unique_ptr SimModeCar::createVehicleSimApi(const PawnSimApi::Params& pawn_sim_api_params) const { - auto vehicle_sim_api = std::unique_ptr(new CarPawnSimApi(pawn_sim_api_params, vehicle_name_)); + auto vehicle_sim_api = std::unique_ptr(new CarPawnSimApi(pawn_sim_api_params, + pawn_sim_api_params.vehicle_name)); vehicle_sim_api->initialize(); vehicle_sim_api->reset(); return vehicle_sim_api; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.h b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.h index 90abd180a1..89d27c5193 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Car/SimModeCar.h @@ -28,13 +28,13 @@ class SimModeCar : public SimModeBase const PawnSimApi* sim_api) const override; public: - SimModeCar(std::string car_name, int port_number); + SimModeCar(int port_number); virtual void BeginPlay() override; virtual void Tick(float DeltaSeconds) override; virtual bool isPaused() const override; virtual void pause(bool is_paused) override; virtual void continueForTime(double seconds) override; - virtual UnityPawn* GetVehiclePawn() override; + virtual UnityPawn* GetVehiclePawn(const std::string& vehicle_name) override; private: std::atomic current_clockspeed_; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.cpp index 13a9e62167..3f5bca8b86 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.cpp @@ -3,8 +3,8 @@ #include "MultirotorPawnSimApi.h" #include "vehicles/multirotor/api/MultirotorRpcLibServer.hpp" -SimModeWorldMultiRotor::SimModeWorldMultiRotor(std::string multiRotorName, int port_number) - : SimModeWorldBase(multiRotorName, port_number) +SimModeWorldMultiRotor::SimModeWorldMultiRotor(int port_number) + : SimModeWorldBase(port_number) { } @@ -28,9 +28,9 @@ void SimModeWorldMultiRotor::EndPlay() SimModeWorldBase::EndPlay(); } -UnityPawn* SimModeWorldMultiRotor::GetVehiclePawn() +UnityPawn* SimModeWorldMultiRotor::GetVehiclePawn(const std::string& vehicle_name) { - return new FlyingPawn(vehicle_name_); + return new FlyingPawn(vehicle_name); } void SimModeWorldMultiRotor::setupClockSpeed() diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.h b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.h index 155e1bdd6d..672e8a3805 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/Vehicles/Multirotor/SimModeWorldMultiRotor.h @@ -15,11 +15,11 @@ class SimModeWorldMultiRotor : public SimModeWorldBase const PawnSimApi* sim_api) const override; public: - SimModeWorldMultiRotor(std::string multi_rotor_name, int port_number); + SimModeWorldMultiRotor(int port_number); virtual void BeginPlay() override; virtual void EndPlay() override; void Tick(float DeltaSeconds) override; - UnityPawn* GetVehiclePawn() override; + UnityPawn* GetVehiclePawn(const std::string& vehicle_name) override; private: typedef FlyingPawn TVehiclePawn; diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp index 66a7e021b3..eb914793cb 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.cpp @@ -3,8 +3,8 @@ #include "PInvokeWrapper.h" #include "UnityUtilities.hpp" -WorldSimApi::WorldSimApi(SimModeBase* simmode, std::string vehicle_name) - : simmode_(simmode), vehicle_name_(vehicle_name) +WorldSimApi::WorldSimApi(SimModeBase* simmode) + : simmode_(simmode) { } @@ -55,7 +55,7 @@ int WorldSimApi::getSegmentationObjectID(const std::string& mesh_name) const void WorldSimApi::printLogMessage(const std::string& message, const std::string& message_param, unsigned char severity) { - PrintLogMessage(message.c_str(), message_param.c_str(), vehicle_name_.c_str(), severity); + PrintLogMessage(message.c_str(), message_param.c_str(), "", severity); } std::unique_ptr> WorldSimApi::swapTextures(const std::string& tag, int tex_id, int component_id, int material_id) diff --git a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h index 02f7b64881..ce38549448 100644 --- a/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h +++ b/Unity/AirLibWrapper/AirsimWrapper/Source/WorldSimApi.h @@ -13,7 +13,7 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase typedef msr::airlib::ImageCaptureBase ImageCaptureBase; typedef msr::airlib::CameraDetails CameraDetails; - WorldSimApi(SimModeBase* simmode, std::string vehicle_name); + WorldSimApi(SimModeBase* simmode); virtual ~WorldSimApi(); // ------ Level setting apis ----- // @@ -92,5 +92,4 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase private: SimModeBase* simmode_; - std::string vehicle_name_; }; diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs new file mode 100644 index 0000000000..7c6148a646 --- /dev/null +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using System; +using AirSimUnity.DroneStructs; +using System.Threading; +using UnityEditor; + +namespace AirSimUnity +{ + public class AirSimServer : MonoBehaviour + { + private const string DRONE_MODE = "Multirotor"; + + // Start is called before the first frame update + void Start() + { + string simMode = AirSimSettings.GetSettings().SimMode; + int basePortId = AirSimSettings.GetSettings().GetPortIDForVehicle(simMode == DRONE_MODE); + bool isServerStarted = PInvokeWrapper.StartServer(simMode, basePortId); + if (isServerStarted == false) + { +#if UNITY_EDITOR + EditorUtility.DisplayDialog("Problem in starting AirSim server!!!", "Please check logs for more information.", "Exit"); +#else + Application.Quit(); +#endif + } + } + + protected void OnApplicationQuit() + { + PInvokeWrapper.StopServer(); + } + } +} \ No newline at end of file diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs.meta b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs.meta new file mode 100644 index 0000000000..0d8a36d9ac --- /dev/null +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca72950c6b9a95848b5b1bee27e51ff8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 100 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimSettings.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimSettings.cs index 2b27df650e..7eb73d0bde 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimSettings.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimSettings.cs @@ -149,6 +149,8 @@ public struct PX4Settings { private static AirSimSettings settings = null; public static AirSimSettings GetSettings() { + if (settings == null) + Initialize(); return settings; } diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs new file mode 100644 index 0000000000..987738054e --- /dev/null +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace AirSimUnity +{ + public class AirSimTick : MonoBehaviour + { + void FixedUpdate() + { + PInvokeWrapper.CallTick(Time.fixedDeltaTime); + } + } +} \ No newline at end of file diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs.meta b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs.meta new file mode 100644 index 0000000000..94e97d4437 --- /dev/null +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/AirSimTick.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9cc58e6de68c02747a4aa12440551a3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -50 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/PInvokeWrapper.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/PInvokeWrapper.cs index 60fd57dbf4..d4f8e410b2 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/PInvokeWrapper.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Utilities/PInvokeWrapper.cs @@ -27,15 +27,15 @@ public static extern void InitVehicleManager(IntPtr SetPose, IntPtr GetPose, Int public static extern void StopDroneServer(string vehicleName); [DllImport(DLL_NAME)] - public static extern bool StartServer(string vehicleName, string simModeName, int portNumber); + public static extern bool StartServer(string simModeName, int portNumber); [DllImport(DLL_NAME)] - public static extern void StopServer(string vehicleName); + public static extern void StopServer(); [DllImport(DLL_NAME)] public static extern void CallTick(float deltaSeconds); [DllImport(DLL_NAME)] - public static extern void InvokeCollisionDetection(CollisionInfo collisionInfo); + public static extern void InvokeCollisionDetection(string vehicleName, CollisionInfo collisionInfo); } } diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/IAirSimInterface.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/IAirSimInterface.cs index ce38757bd5..49514de4de 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/IAirSimInterface.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/IAirSimInterface.cs @@ -6,14 +6,10 @@ namespace AirSimUnity */ public interface IAirSimInterface { - bool StartVehicleServer(string hostIP); - - void StopVehicleServer(); - KinemticState GetKinematicState(); void InvokeTickInAirSim(float deltaSecond); - void InvokeCollisionDetectionInAirSim(CollisionInfo collisionInfo); + void InvokeCollisionDetectionInAirSim(string vehicleName, CollisionInfo collisionInfo); } } diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Multirotor/Drone.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Multirotor/Drone.cs index c7ede644ef..463da9a21e 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Multirotor/Drone.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Multirotor/Drone.cs @@ -41,6 +41,8 @@ public class Drone : Vehicle { transform.position = position; transform.rotation = rotation; + currentPose = poseFromAirLib; + for (int i = 0; i < rotors.Length; i++) { float rotorSpeed = (float) (rotorInfos[i].rotorSpeed * rotorInfos[i].rotorDirection * 180 / diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Vehicle.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Vehicle.cs index 65f49a0e58..0f548b2c7b 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Vehicle.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/Vehicle.cs @@ -46,6 +46,8 @@ public abstract class Vehicle : MonoBehaviour, IVehicleInterface { RaycastHit hitInfo; bool hitResult; + [SerializeField] string vehicleName; + //Ensure to call this method as the first statement, from derived class `Start()` method. protected void Start() { isDrone = this is Drone ? true : false; @@ -55,19 +57,8 @@ protected void Start() { InitializeVehicle(); - airsimInterface = VehicleCompanion.GetVehicleCompanion(this); - isServerStarted = airsimInterface.StartVehicleServer(AirSimSettings.GetSettings().LocalHostIP); - - if (isServerStarted == false) - { -#if UNITY_EDITOR - EditorUtility.DisplayDialog("Problem in starting AirSim server!!!", "Please check logs for more information.", "Exit"); - EditorApplication.Exit(1); -#else - Application.Quit(); -#endif - } - + airsimInterface = VehicleCompanion.GetVehicleCompanion(vehicleName, this); + isServerStarted = true; AirSimGlobal.Instance.Weather.AttachToVehicle(this); } @@ -114,8 +105,6 @@ protected void LateUpdate() { { print_log_messages_ = !print_log_messages_; } - - airsimInterface.InvokeTickInAirSim(Time.deltaTime); } } @@ -133,7 +122,7 @@ protected void OnCollisionEnter(Collision collision) { collisionInfo.object_name = collision.collider.name; collisionInfo.time_stamp = DataManager.GetCurrentTimeInMilli(); - airsimInterface.InvokeCollisionDetectionInAirSim(collisionInfo); + airsimInterface.InvokeCollisionDetectionInAirSim(vehicleName, collisionInfo); } } @@ -160,10 +149,6 @@ protected void OnCollisionExit() { } } - protected void OnApplicationQuit() { - airsimInterface.StopVehicleServer(); - } - //Define the recording data that needs to be saved in the airsim_rec file for Toggle Recording button public abstract DataRecorder.ImageData GetRecordingData(); diff --git a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/VehicleCompanion.cs b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/VehicleCompanion.cs index c83787d8d5..e9d4f00408 100644 --- a/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/VehicleCompanion.cs +++ b/Unity/UnityDemo/Assets/AirSimAssets/Scripts/Vehicles/VehicleCompanion.cs @@ -36,34 +36,23 @@ private VehicleCompanion(IVehicleInterface vehicleInterface) { basePortId = AirSimSettings.GetSettings().GetPortIDForVehicle(isDrone); } - public static VehicleCompanion GetVehicleCompanion(IVehicleInterface vehicleInterface) { + public static VehicleCompanion GetVehicleCompanion(string vehicleName, IVehicleInterface vehicleInterface) { var companion = new VehicleCompanion(vehicleInterface); - if (AirSimSettings.GetSettings().SimMode == "Car") - companion.vehicleName = "PhysXCar"; - else if (AirSimSettings.GetSettings().SimMode == "Multirotor") - companion.vehicleName = "SimpleFlight"; + companion.vehicleName = vehicleName; Vehicles.Add(companion); return companion; } - public bool StartVehicleServer(string hostIP) { - return PInvokeWrapper.StartServer(vehicleName, AirSimSettings.GetSettings().SimMode, basePortId); - } - - public void StopVehicleServer() { - PInvokeWrapper.StopServer(vehicleName); - } - public void InvokeTickInAirSim(float deltaSecond) { PInvokeWrapper.CallTick(deltaSecond); } - public void InvokeCollisionDetectionInAirSim(CollisionInfo collisionInfo) + public void InvokeCollisionDetectionInAirSim(string vehicleName, CollisionInfo collisionInfo) { - PInvokeWrapper.InvokeCollisionDetection(collisionInfo); + PInvokeWrapper.InvokeCollisionDetection(vehicleName, collisionInfo); } public KinemticState GetKinematicState() { @@ -101,10 +90,10 @@ private static void InitDelegators() { Marshal.GetFunctionPointerForDelegate(new Func(GetSegmentationObjectId)), Marshal.GetFunctionPointerForDelegate(new Func(PrintLogMessage)), Marshal.GetFunctionPointerForDelegate(new Func(GetTransformFromUnity)), - Marshal.GetFunctionPointerForDelegate(new Func(Reset)), + Marshal.GetFunctionPointerForDelegate(new Func(Reset)), Marshal.GetFunctionPointerForDelegate(new Func(GetVelocity)), Marshal.GetFunctionPointerForDelegate(new Func(GetRayCastHit)), - Marshal.GetFunctionPointerForDelegate(new Func(Pause)) + Marshal.GetFunctionPointerForDelegate(new Func(Pause)) ); } @@ -142,10 +131,12 @@ private static UnityTransform GetTransformFromUnity(string vehicleName) return vehicle.VehicleInterface.GetTransform(); } - private static bool Reset(string vehicleName) + private static bool Reset() { - var vehicle = Vehicles.Find(element => element.vehicleName == vehicleName); - vehicle.VehicleInterface.ResetVehicle(); + foreach (var vehicle in Vehicles) + { + vehicle.VehicleInterface.ResetVehicle(); + } return true; } @@ -208,7 +199,7 @@ private static bool GetDistortionParams(string cameraName, string vehicleName) } private static bool PrintLogMessage(string message, string messageParams, string vehicleName, int severity) { - var vehicle = Vehicles.Find(element => element.vehicleName == vehicleName); + var vehicle = Vehicles[0]; //we just let first vehicle print the message return vehicle.VehicleInterface.PrintLogMessage(message, messageParams, vehicleName, severity); } @@ -220,10 +211,13 @@ private static int GetSegmentationObjectId(string objectName) { return Vehicle.GetSegmentationObjectId(objectName); } - private static bool Pause(string vehicleName, float timeScale) + private static bool Pause(float timeScale) { - var vehicle = Vehicles.Find(element => element.vehicleName == vehicleName); - return vehicle.VehicleInterface.Pause(timeScale); + foreach (var vehicle in Vehicles) + { + vehicle.VehicleInterface.Pause(timeScale); + } + return true; } } } diff --git a/Unity/UnityDemo/Assets/Scenes/CarDemo.unity b/Unity/UnityDemo/Assets/Scenes/CarDemo.unity index bf2dd21091..ecccc212c6 100644 --- a/Unity/UnityDemo/Assets/Scenes/CarDemo.unity +++ b/Unity/UnityDemo/Assets/Scenes/CarDemo.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_IndirectSpecularColor: {r: 0.18028334, g: 0.2257134, b: 0.30692226, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -9412,6 +9412,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: e924d4c00c2c05d42830dd3a94dd86a8, type: 3} m_Name: m_EditorClassIdentifier: + vehicleName: PhysXCar --- !u!114 &1472270036 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Unity/UnityDemo/Assets/Scenes/DroneDemo.unity b/Unity/UnityDemo/Assets/Scenes/DroneDemo.unity index e71e10a492..c9445e2295 100644 --- a/Unity/UnityDemo/Assets/Scenes/DroneDemo.unity +++ b/Unity/UnityDemo/Assets/Scenes/DroneDemo.unity @@ -1243,6 +1243,11 @@ PrefabInstance: propertyPath: m_LocalPosition.z value: 0.1 objectReference: {fileID: 0} + - target: {fileID: 114101639218931136, guid: f63bf11bc2a9a7146a4375d511e1425c, + type: 3} + propertyPath: vehicleName + value: SimpleFlight + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} --- !u!1 &142585434 @@ -3556,6 +3561,62 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 638753530} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &663350804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 663350806} + - component: {fileID: 663350805} + - component: {fileID: 663350807} + m_Layer: 0 + m_Name: AirSimManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &663350805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663350804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cc58e6de68c02747a4aa12440551a3b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &663350806 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663350804} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &663350807 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 663350804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca72950c6b9a95848b5b1bee27e51ff8, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &701307520 GameObject: m_ObjectHideFlags: 0 diff --git a/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity b/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity new file mode 100644 index 0000000000..9cc659950a --- /dev/null +++ b/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity @@ -0,0 +1,640 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &76558686 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1875394544442156, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_Name + value: QuadCopter (1) + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.x + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114101639218931136, guid: f63bf11bc2a9a7146a4375d511e1425c, + type: 3} + propertyPath: vehicleName + value: Drone2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} +--- !u!1001 &84582270 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 8816652036562285266, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_Name + value: AirSimGlobal + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8816652036562285271, guid: b565de1eeeb33764b9c78ef5dccaa49d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b565de1eeeb33764b9c78ef5dccaa49d, type: 3} +--- !u!1 &175834421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 175834423} + - component: {fileID: 175834422} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &175834422 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175834421} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &175834423 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175834421} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &480568803 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 480568806} + - component: {fileID: 480568805} + - component: {fileID: 480568804} + m_Layer: 0 + m_Name: AirSimManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &480568804 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480568803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca72950c6b9a95848b5b1bee27e51ff8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &480568805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480568803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9cc58e6de68c02747a4aa12440551a3b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &480568806 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 480568803} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &560037646 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 560037650} + - component: {fileID: 560037649} + - component: {fileID: 560037648} + - component: {fileID: 560037647} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &560037647 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 560037646} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 10, y: 5, z: 10} + m_Center: {x: 0, y: -2.5, z: 0} +--- !u!23 &560037648 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 560037646} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &560037649 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 560037646} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &560037650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 560037646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 10, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &738106958 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1875394544442156, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_Name + value: QuadCopter + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.x + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4943211950449684, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114101639218931136, guid: f63bf11bc2a9a7146a4375d511e1425c, + type: 3} + propertyPath: vehicleName + value: Drone1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f63bf11bc2a9a7146a4375d511e1425c, type: 3} +--- !u!1 &1864850015 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1864850018} + - component: {fileID: 1864850017} + - component: {fileID: 1864850016} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1864850016 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864850015} + m_Enabled: 1 +--- !u!20 &1864850017 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864850015} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1864850018 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1864850015} + m_LocalRotation: {x: 0.2164396, y: 0, z: 0, w: 0.97629607} + m_LocalPosition: {x: 0, y: 15, z: -25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 25, y: 0, z: 0} diff --git a/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity.meta b/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity.meta new file mode 100644 index 0000000000..f813c475e3 --- /dev/null +++ b/Unity/UnityDemo/Assets/Scenes/MultiDroneDemo.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df7823065d92e2948a9a715a3a586cb2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: