Exemplo n.º 1
0
        public static GravityVolume Make(GameObject body, float surfaceAccel, float upperSurface, float lowerSurface)
        {
            GameObject gravityGO = new GameObject();
            gravityGO.transform.parent = body.transform;
            gravityGO.name = "GravityWell";
            gravityGO.layer = 17;
            gravityGO.SetActive(false);

            GravityVolume GV = gravityGO.AddComponent<GravityVolume>();
            GV.SetValue("_cutoffAcceleration", 0.1f);
            GV.SetValue("_falloffType", GV.GetType().GetNestedType("FalloffType", BindingFlags.NonPublic).GetField("linear").GetValue(GV));
            GV.SetValue("_alignmentRadius", 1.5f * upperSurface);
            //Utility.AddDebugShape.AddSphere(gravityGO, 1.5f * upperSurface, new Color32(255, 0, 0, 128));
            GV.SetValue("_upperSurfaceRadius", upperSurface);
            GV.SetValue("_lowerSurfaceRadius", lowerSurface);
            GV.SetValue("_layer", 3);
            GV.SetValue("_priority", 0);
            GV.SetValue("_alignmentPriority", 0);
            GV.SetValue("_surfaceAcceleration", surfaceAccel);
            GV.SetValue("_inheritable", false);
            GV.SetValue("_isPlanetGravityVolume", true);
            GV.SetValue("_cutoffRadius", 55f);

            SphereCollider SC = gravityGO.AddComponent<SphereCollider>();
            SC.isTrigger = true;
            SC.radius = 4 * upperSurface;

            OWCollider OWC = gravityGO.AddComponent<OWCollider>();
            OWC.SetLODActivationMask(DynamicOccupant.Player);

            gravityGO.SetActive(true);

            Logger.Log("Finished building gravity", Logger.LogType.Log);
            return GV;
        }
Exemplo n.º 2
0
        public static Sector Make(GameObject body, OWRigidbody rigidbody, IPlanetConfig config)
        {
            GameObject sectorGO = new GameObject();

            sectorGO.SetActive(false);
            sectorGO.transform.parent = body.transform;

            SphereShape SS = sectorGO.AddComponent <SphereShape>();

            SS.SetCollisionMode(Shape.CollisionMode.Volume);
            SS.SetLayer(Shape.Layer.Sector);
            SS.layerMask       = -1;
            SS.pointChecksOnly = true;
            SS.radius          = config.AtmoEndSize + 10;
            SS.center          = Vector3.zero;

            /*OWTriggerVolume trigVol = */ sectorGO.AddComponent <OWTriggerVolume>();

            Sector S = sectorGO.AddComponent <Sector>();

            S.SetValue("_name", Sector.Name.Unnamed);
            S.SetValue("__attachedOWRigidbody", rigidbody);
            S.SetValue("_subsectors", new List <Sector>());

            sectorGO.SetActive(true);

            Logger.Log("Finished building sector", Logger.LogType.Log);
            return(S);
        }
Exemplo n.º 3
0
        public static void Make(GameObject body, Sector sector, IPlanetConfig config)
        {
            GameObject waterGO = new GameObject();

            waterGO.SetActive(false);
            waterGO.layer                = 15;
            waterGO.transform.parent     = body.transform;
            waterGO.transform.localScale = new Vector3(config.WaterSize / 2, config.WaterSize / 2, config.WaterSize / 2);
            waterGO.DestroyAllComponents <SphereCollider>();

            TessellatedSphereRenderer TSR = waterGO.AddComponent <TessellatedSphereRenderer>();

            TSR.tessellationMeshGroup = GameObject.Find("Ocean_GD").GetComponent <TessellatedSphereRenderer>().tessellationMeshGroup;
            TSR.sharedMaterials       = GameObject.Find("Ocean_GD").GetComponent <TessellatedSphereRenderer>().sharedMaterials;
            TSR.maxLOD    = 7;
            TSR.LODBias   = 2;
            TSR.LODRadius = 2f;

            TessSphereSectorToggle TSST = waterGO.AddComponent <TessSphereSectorToggle>();

            TSST.SetValue("_sector", sector);

            OceanEffectController OEC = waterGO.AddComponent <OceanEffectController>();

            OEC.SetValue("_sector", sector);
            OEC.SetValue("_ocean", TSR);

            // Because assetbundles were a bitch...

            /*
             * GameObject fog1 = new GameObject();
             * fog1.transform.parent = waterBase.transform;
             * fog1.transform.localScale = new Vector3(1, 1, 1);
             * fog1.AddComponent<MeshFilter>().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
             * fog1.AddComponent<MeshRenderer>().material = new Material(Shader.Find("Sprites/Default"));
             * fog1.GetComponent<MeshRenderer>().material.color = new Color32(0, 75, 50, 5);
             *
             * GameObject fog2 = new GameObject();
             * fog2.transform.parent = waterBase.transform;
             * fog2.transform.localScale = new Vector3(1.001f, 1.001f, 1.001f);
             * fog2.AddComponent<MeshFilter>().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
             * fog2.AddComponent<MeshRenderer>().material = new Material(Shader.Find("Sprites/Default"));
             * fog2.GetComponent<MeshRenderer>().material.color = new Color32(0, 75, 50, 5);
             *
             * GameObject fog3 = new GameObject();
             * fog3.transform.parent = fog2.transform;
             * fog3.transform.localScale = new Vector3(1.001f, 1.001f, 1.001f);
             * fog3.AddComponent<MeshFilter>().mesh = GameObject.Find("CloudsTopLayer_GD").GetComponent<MeshFilter>().mesh;
             * fog3.AddComponent<MeshRenderer>().material = new Material(Shader.Find("Sprites/Default"));
             * fog3.GetComponent<MeshRenderer>().material.color = new Color32(0, 75, 50, 5);
             */

            waterGO.SetActive(true);

            Logger.Log("Finished building water", Logger.LogType.Log);
        }
Exemplo n.º 4
0
        public static void Make(GameObject body, float airScale, bool isRaining)
        {
            GameObject airGO = new GameObject();

            airGO.SetActive(false);
            airGO.layer            = 17;
            airGO.transform.parent = body.transform;

            SphereCollider SC = airGO.AddComponent <SphereCollider>();

            SC.isTrigger = true;
            SC.radius    = airScale;

            SimpleFluidVolume SFV = airGO.AddComponent <SimpleFluidVolume>();

            SFV.SetValue("_layer", 5);
            SFV.SetValue("_priority", 1);
            SFV.SetValue("_density", 1.2f);
            SFV.SetValue("_fluidType", FluidVolume.Type.AIR);
            SFV.SetValue("_allowShipAutoroll", true);
            SFV.SetValue("_disableOnStart", false);

            if (isRaining)
            {
                VisorRainEffectVolume VREF = airGO.AddComponent <VisorRainEffectVolume>();
                VREF.SetValue("_rainDirection", VisorRainEffectVolume.RainDirection.Radial);
                VREF.SetValue("_layer", 0);
                VREF.SetValue("_priority", 0);

                AudioSource AS = airGO.AddComponent <AudioSource>();
                AS.mute                  = false;
                AS.bypassEffects         = false;
                AS.bypassListenerEffects = false;
                AS.bypassReverbZones     = false;
                AS.playOnAwake           = false;
                AS.loop                  = true;
                AS.priority              = 128;
                AS.volume                = 0.35f;
                AS.pitch                 = 1f;
                AS.panStereo             = 0f;
                AS.spatialBlend          = 0f;
                AS.reverbZoneMix         = 1f;

                OWAudioSource OWAS = airGO.AddComponent <OWAudioSource>();
                OWAS.SetAudioLibraryClip(AudioType.GD_RainAmbient_LP);
                OWAS.SetClipSelectionType(OWAudioSource.ClipSelectionOnPlay.RANDOM);
                OWAS.SetTrack(OWAudioMixer.TrackName.Environment);

                /*AudioVolume av = */ airGO.AddComponent <AudioVolume>();
            }

            airGO.SetActive(true);
            Logger.Log("Finished building air.", Logger.LogType.Log);
        }
Exemplo n.º 5
0
        public static void Make(GameObject body, IPlanetConfig config)
        {
            MapMarker MM = body.AddComponent <MapMarker>();

            MM.SetValue("_labelID", (UITextType)Utility.AddToUITable.Add(config.Name));

            if (config.IsMoon)
            {
                MM.SetValue("_markerType", MM.GetType().GetNestedType("MarkerType", BindingFlags.NonPublic).GetField("Moon").GetValue(MM));
            }
            else
            {
                MM.SetValue("_markerType", MM.GetType().GetNestedType("MarkerType", BindingFlags.NonPublic).GetField("Planet").GetValue(MM));
            }
            Logger.Log("Finished building map marker", Logger.LogType.Log);
        }
Exemplo n.º 6
0
        public static void Make(GameObject body, float groundScale)
        {
            GameObject groundGO = GameObject.CreatePrimitive(PrimitiveType.Sphere);

            groundGO.transform.parent                       = body.transform;
            groundGO.transform.localScale                   = new Vector3(groundScale / 2, groundScale / 2, groundScale / 2);
            groundGO.GetComponent <MeshFilter>().mesh       = GameObject.Find("CloudsTopLayer_GD").GetComponent <MeshFilter>().mesh;
            groundGO.GetComponent <SphereCollider>().radius = 1f;
            groundGO.SetActive(true);

            /*
             * GameObject sphere = new GameObject();
             * Debug.LogError("1");
             * sphere.SetActive(false);
             * Debug.LogError("2");
             * MeshFilter mf = sphere.AddComponent<MeshFilter>();
             * Debug.LogError("3");
             * mf.mesh = mesh;
             * Debug.LogError("4");
             * MeshRenderer mr = sphere.AddComponent<MeshRenderer>();
             * Debug.LogError("5");
             * mr.material = new Material(Shader.Find("Standard"));
             * Debug.LogError("6");
             * sphere.transform.parent = body.transform;
             * Debug.LogError("7");
             * sphere.transform.localScale = new Vector3(groundScale / 2, groundScale / 2, groundScale / 2);
             * Debug.LogError("8");
             * sphere.SetActive(true);
             * Debug.LogError("9");
             */

            /*
             * var geo = MainClass.assetBundle.LoadAsset<GameObject>("PLANET");
             * GameObject temp = GameObject.CreatePrimitive(PrimitiveType.Sphere);
             * geo.GetComponent<Renderer>().material = temp.GetComponent<Renderer>().material;
             * GameObject.Destroy(temp);
             * geo.transform.parent = body.transform;
             * geo.transform.localScale = new Vector3(1,1,1);
             * geo.transform.localPosition = new Vector3(0, 0, 0);
             * Debug.LogError(geo.name);
             * Debug.LogError(geo.GetComponent<MeshFilter>().mesh.name);
             * Debug.LogError(geo.transform.parent.name);
             * geo.SetActive(true);
             *
             */
            Logger.Log("Finished building geometry", Logger.LogType.Log);
        }
Exemplo n.º 7
0
        public static void Make(GameObject body, Sector sector, IPlanetConfig config)
        {
            GameObject overrideGO = new GameObject();

            overrideGO.SetActive(false);
            overrideGO.transform.parent = body.transform;

            GiantsDeepSunOverrideVolume GDSOV = overrideGO.AddComponent <GiantsDeepSunOverrideVolume>();

            GDSOV.SetValue("_sector", sector);
            GDSOV.SetValue("_cloudsOuterRadius", config.TopCloudSize / 2);
            GDSOV.SetValue("_cloudsInnerRadius", config.BottomCloudSize / 2);
            GDSOV.SetValue("_waterOuterRadius", config.WaterSize / 2);
            GDSOV.SetValue("_waterInnerRadius", 402.5f);

            overrideGO.SetActive(true);
            Logger.Log("Finished building sun override.", Logger.LogType.Log);
        }
Exemplo n.º 8
0
        public static void Make(GameObject body, AstroObject primaryBody)
        {
            GameObject detectorGO = new GameObject();

            detectorGO.SetActive(false);
            detectorGO.name             = "FieldDetector";
            detectorGO.transform.parent = body.transform;
            detectorGO.layer            = 20;

            ConstantForceDetector CFD = detectorGO.AddComponent <ConstantForceDetector>();

            ForceVolume[] temp = new ForceVolume[1];
            temp[0] = primaryBody.GetAttachedOWRigidbody().GetAttachedGravityVolume();
            CFD.SetValue("_detectableFields", temp);
            CFD.SetValue("_inheritElement0", true);

            detectorGO.SetActive(true);
            Logger.Log("Finished building detector", Logger.LogType.Log);
        }
Exemplo n.º 9
0
        public static void Make(GameObject body, IPlanetConfig config)
        {
            GameObject volumesGO = new GameObject();

            volumesGO.SetActive(false);
            volumesGO.transform.parent = body.transform;

            GameObject rulesetGO = new GameObject();

            rulesetGO.SetActive(false);
            rulesetGO.transform.parent = volumesGO.transform;

            SphereShape SS = rulesetGO.AddComponent <SphereShape>();

            SS.SetCollisionMode(Shape.CollisionMode.Volume);
            SS.SetLayer(Shape.Layer.Sector);
            SS.layerMask       = -1;
            SS.pointChecksOnly = true;
            SS.radius          = config.TopCloudSize;

            /*OWTriggerVolume trigvol = */ rulesetGO.AddComponent <OWTriggerVolume>();

            PlanetoidRuleset PR = rulesetGO.AddComponent <PlanetoidRuleset>();

            PR.SetValue("_altitudeFloor", config.GroundSize);
            PR.SetValue("_altitudeCeiling", config.TopCloudSize);

            EffectRuleset ER = rulesetGO.AddComponent <EffectRuleset>();

            ER.SetValue("_type", EffectRuleset.BubbleType.Underwater);
            ER.SetValue("_material", GameObject.Find("RulesetVolumes_GD").GetComponent <RulesetVolume>().GetValue <Material>("_material"));
            ER.SetValue("_cloudMaterial", GameObject.Find("RulesetVolumes_GD").GetComponent <RulesetVolume>().GetValue <Material>("_cloudMaterial"));

            rulesetGO.SetActive(true);
            volumesGO.SetActive(true);
            Logger.Log("Finished building volumes", Logger.LogType.Log);
        }
Exemplo n.º 10
0
        public static void Make(GameObject body, OWRigidbody rigidbody, IPlanetConfig config)
        {
            GameObject rfGO = new GameObject("RFVolume");

            rfGO.transform.parent = body.transform;
            rfGO.layer            = 19;
            rfGO.SetActive(false);

            SphereCollider SC = rfGO.AddComponent <SphereCollider>();

            SC.isTrigger = true;
            SC.radius    = config.AtmoEndSize * 2;

            ReferenceFrameVolume RFV = rfGO.AddComponent <ReferenceFrameVolume>();

            ReferenceFrame RV = new ReferenceFrame(rigidbody);

            RV.SetValue("_minSuitTargetDistance", 300);
            RV.SetValue("_maxTargetDistance", 0);
            RV.SetValue("_autopilotArrivalDistance", 1000);
            RV.SetValue("_autoAlignmentDistance", 1000);
            //Utility.AddDebugShape.AddSphere(rfGO, 1000, new Color32(0, 255, 0, 128));
            RV.SetValue("_hideLandingModePrompt", false);
            RV.SetValue("_matchAngularVelocity", true);
            RV.SetValue("_minMatchAngularVelocityDistance", 70);
            RV.SetValue("_maxMatchAngularVelocityDistance", 400);
            RV.SetValue("_bracketsRadius", 300);

            RFV.SetValue("_referenceFrame", RV);
            RFV.SetValue("_minColliderRadius", 300);
            RFV.SetValue("_maxColliderRadius", config.AtmoEndSize * 2);
            RFV.SetValue("_isPrimaryVolume", true);
            RFV.SetValue("_isCloseRangeVolume", false);

            rfGO.SetActive(true);
            Logger.Log("Finished building rfvolume", Logger.LogType.Log);
        }
Exemplo n.º 11
0
        public static void Make(GameObject body, Sector sector, IPlanetConfig config)
        {
            GameObject lightGO = new GameObject();

            lightGO.SetActive(false);
            lightGO.transform.parent = body.transform;

            Light L = lightGO.AddComponent <Light>();

            L.type      = LightType.Point;
            L.range     = config.AtmoEndSize + 10;
            L.color     = config.LightTint.ToColor32();
            L.intensity = 0.8f;
            L.shadows   = LightShadows.None;
            L.cookie    = GameObject.Find("AmbientLight_GD").GetComponent <Light>().cookie;

            SectorLightsCullGroup SLCG = lightGO.AddComponent <SectorLightsCullGroup>();

            SLCG.SetSector(sector);

            lightGO.SetActive(true);

            Logger.Log("Finished building ambient light", Logger.LogType.Log);
        }
Exemplo n.º 12
0
        public static void Make(GameObject body, Sector sector)
        {
            GameObject effectsGO = new GameObject();

            effectsGO.SetActive(false);
            effectsGO.transform.parent = body.transform;

            SectorCullGroup SCG = effectsGO.AddComponent <SectorCullGroup>();

            SCG.SetValue("_sector", sector);
            SCG.SetValue("_particleSystemSuspendMode", CullGroup.ParticleSystemSuspendMode.Stop);
            SCG.SetValue("_occlusionCulling", false);
            SCG.SetValue("_dynamicCullingBounds", false);
            SCG.SetValue("_waitForStreaming", false);

            var rainGO = GameObject.Instantiate(GameObject.Find("Effects_GD_Rain"));

            rainGO.transform.parent        = effectsGO.transform;
            rainGO.transform.localPosition = Vector3.zero;

            effectsGO.SetActive(true);
            rainGO.SetActive(true);
            Logger.Log("Finished building effects", Logger.LogType.Log);
        }
Exemplo n.º 13
0
        public static void Make(GameObject body, IPlanetConfig config)
        {
            GameObject atmoGO = new GameObject();

            atmoGO.SetActive(false);
            atmoGO.name             = "Atmosphere";
            atmoGO.transform.parent = body.transform;

            if (config.HasFog)
            {
                GameObject fogGO = new GameObject();
                fogGO.SetActive(false);
                fogGO.name                 = "FogSphere";
                fogGO.transform.parent     = atmoGO.transform;
                fogGO.transform.localScale = new Vector3((config.TopCloudSize / 2) + 10, (config.TopCloudSize / 2) + 10, (config.TopCloudSize / 2) + 10);

                MeshFilter MF = fogGO.AddComponent <MeshFilter>();
                MF.mesh = GameObject.Find("Atmosphere_GD/FogSphere").GetComponent <MeshFilter>().mesh;

                MeshRenderer MR = fogGO.AddComponent <MeshRenderer>();
                MR.materials = GameObject.Find("Atmosphere_GD/FogSphere").GetComponent <MeshRenderer>().materials;
                MR.allowOcclusionWhenDynamic = true;

                PlanetaryFogController PFC = fogGO.AddComponent <PlanetaryFogController>();
                PFC.fogLookupTexture      = GameObject.Find("Atmosphere_GD/FogSphere").GetComponent <PlanetaryFogController>().fogLookupTexture;
                PFC.fogRadius             = (config.WaterSize / 2) + 50;
                PFC.fogDensity            = config.FogDensity;
                PFC.fogExponent           = 1f;
                PFC.fogColorRampTexture   = GameObject.Find("Atmosphere_GD/FogSphere").GetComponent <PlanetaryFogController>().fogColorRampTexture;
                PFC.fogColorRampIntensity = 1f;
                PFC.fogTint = config.FogTint.ToColor32();

                fogGO.SetActive(true);
            }

            //Logger.Log("Re-add LOD atmosphere!", Logger.LogType.Todo);

            GameObject atmo = GameObject.Instantiate(GameObject.Find("Atmosphere_TH/AtmoSphere"));

            atmo.transform.parent        = atmoGO.transform;
            atmo.transform.localPosition = Vector3.zero;
            atmo.transform.localScale    = new Vector3(config.TopCloudSize, config.TopCloudSize, config.TopCloudSize);

            /*
             * GameObject lod1 = new GameObject();
             * lod1.transform.parent = atmo.transform;
             * lod1.transform.localPosition = Vector3.zero;
             * MeshFilter f1 = lod1.AddComponent<MeshFilter>();
             * f1.mesh = GameObject.Find("Atmosphere_LOD1").GetComponent<MeshFilter>().mesh;
             * MeshRenderer r1 = lod1.AddComponent<MeshRenderer>();
             * r1.material = mat;
             *
             * GameObject lod2 = new GameObject();
             * lod2.transform.parent = atmo.transform;
             * lod2.transform.localPosition = Vector3.zero;
             * MeshFilter f2 = lod2.AddComponent<MeshFilter>();
             * f2.mesh = GameObject.Find("Atmosphere_LOD2").GetComponent<MeshFilter>().mesh;
             * MeshRenderer r2 = lod2.AddComponent<MeshRenderer>();
             * r2.material = mat;
             *
             * GameObject lod3 = new GameObject();
             * lod3.transform.parent = atmo.transform;
             * lod3.transform.localPosition = Vector3.zero;
             * MeshFilter f3 = lod3.AddComponent<MeshFilter>();
             * f3.mesh = GameObject.Find("Atmosphere_LOD3").GetComponent<MeshFilter>().mesh;
             * MeshRenderer r3 = lod3.AddComponent<MeshRenderer>();
             * r3.material = mat;
             */

            // THIS F*****G THING. do NOT ask why i have done this. IT WORKS.
            // This creates an LOD group in the worst way possible. i am so sorry.

            /*
             * LODGroup lodg = atmo.AddComponent<LODGroup>();
             *
             * LOD[] lodlist = new LOD[4];
             * Renderer[] t0 = { r0 };
             * Renderer[] t1 = { r1 };
             * Renderer[] t2 = { r2 };
             * Renderer[] t3 = { r3 };
             * LOD one = new LOD(1, t0);
             * LOD two = new LOD(0.7f, t1);
             * LOD three = new LOD(0.27f, t2);
             * LOD four = new LOD(0.08f, t3);
             * lodlist[0] = one;
             * lodlist[1] = two;
             * lodlist[2] = three;
             * lodlist[3] = four;
             *
             * lodg.SetLODs(lodlist);
             * lodg.fadeMode = LODFadeMode.None;
             */

            atmo.SetActive(true);
            atmoGO.SetActive(true);
            Logger.Log("Finished building atmosphere.", Logger.LogType.Log);
        }