Exemple #1
0
        private static void UpdatePos(SimpleCube simCubeInstance)
        {
            int currPosX = simCubeInstance.GetPosX;
            int currPosY = simCubeInstance.GetPosY;

            SimpleCube[] arrConj = simCubeInstance.GetConj;
            for (int i = 0; i < 4; i++)
            {
                if (arrConj[i] != null)
                {
                    switch (i)
                    {
                    case 0:
                        arrConj[0].SetPos(currPosX - 1, currPosY);
                        break;

                    case 1:
                        arrConj[1].SetPos(currPosX, currPosY - 1);
                        break;

                    case 2:
                        arrConj[2].SetPos(currPosX + 1, currPosY);
                        break;

                    case 3:
                        arrConj[3].SetPos(currPosX, currPosY + 1);
                        break;
                    }
                    UpdatePos(arrConj[i]);
                }
            }
        }
        internal void Apply(CelestialBody celestialBody, Transform scaledCelestialTransform, float radius)
        {
            Remove();
            this.celestialBody            = celestialBody;
            this.scaledCelestialTransform = scaledCelestialTransform;
            SimpleCube hp = new SimpleCube(2000, ref AtmosphereMaterial, AtmosphereShader);

            AtmosphereMesh = hp.GameObject;

            atmosphereMaterial.Scale = 500f / (float)celestialBody.Radius;

            this.radius = radius;
            if (celestialBody.ocean)
            {
                atmosphereMaterial.OceanRadius = (float)celestialBody.Radius;
            }
            else
            {
                atmosphereMaterial.OceanRadius = 0;
            }

            atmosphereMaterial.SphereRadius = (float)celestialBody.Radius;

            Scaled = false;
        }
 public void Render(SimpleCube sc)
 {
     this.Left = sc.GetPosX * BoxWidth;
     this.Top = sc.GetPosY * BoxHeight + FieldOffset;
     if (IsShowed) return;
     GameBoardstandard.Controls.Add(this);
     IsShowed = true;
 }
 public void Render(SimpleCube sc)
 {
     this.Left = sc.GetPosX * BoxWidth;
     this.Top  = sc.GetPosY * BoxHeight + FieldOffset;
     if (IsShowed)
     {
         return;
     }
     GameBoardstandard.Controls.Add(this);
     IsShowed = true;
 }
Exemple #5
0
        protected void FindCentralCube()
        {
            int i = 0;

            if (Cubes != null)
            {
                while (!Cubes[i++].IsCentral)
                {
                }
            }
            CentralCube = Cubes[--i];
        }
        public static SimpleCube[] GetPartDefinition(Definition name)
        {
            //initializetion probl ** Graph
            SimpleCube[] tetraPart = new SimpleCube[4];
            for (int i = 1; i < 4; i++)
            {
                tetraPart[i] = new SimpleCube();
            }
            tetraPart[0] = new SimpleCube(0, 0);
            switch (name)
            {
            case Definition.O_Detail:
                tetraPart[0].SetConj(null, null, tetraPart[1]);
                tetraPart[1].SetConj(null, null, null, tetraPart[2]);
                tetraPart[2].SetConj(tetraPart[3]);
                break;

            case Definition.I_Detail:
                tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
                tetraPart[2].SetConj(null, null, tetraPart[3]);
                break;

            case Definition.T_Detail:
                tetraPart[0].SetConj(tetraPart[1], tetraPart[2], tetraPart[3]);
                break;

            case Definition.J_Detail:
                tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
                tetraPart[1].SetConj(null, tetraPart[3]);
                break;

            case Definition.L_Detail:
                tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
                tetraPart[2].SetConj(null, tetraPart[3]);
                break;

            case Definition.S_Detail:
                tetraPart[0].SetConj(tetraPart[1], tetraPart[2]);
                tetraPart[2].SetConj(null, null, tetraPart[3]);
                break;

            case Definition.Z_Detail:
                tetraPart[0].SetConj(null, tetraPart[1], tetraPart[2]);
                tetraPart[1].SetConj(tetraPart[3]);
                break;

            default:
                return(null);
            }
            return(tetraPart);
        }
 public static SimpleCube[] GetPartDefinition(Definition name)
 {
     //initializetion probl ** Graph
     SimpleCube[] tetraPart = new SimpleCube[4];
     for (int i = 1; i < 4; i++)
     {
         tetraPart[i] = new SimpleCube();
     }
     tetraPart[0] = new SimpleCube(0, 0);
     switch (name)
     {
         case Definition.ODetail:
             tetraPart[0].SetConj(null, null, tetraPart[1]);
             tetraPart[1].SetConj(null, null, null, tetraPart[2]);
             tetraPart[2].SetConj(tetraPart[3]);
             break;
         case Definition.Detail:
             tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
             tetraPart[2].SetConj(null, null, tetraPart[3]);
             break;
         case Definition.T_Detail:
             tetraPart[0].SetConj(tetraPart[1], tetraPart[2], tetraPart[3]);
             break;
         case Definition.JDetail:
             tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
             tetraPart[1].SetConj(null, tetraPart[3]);
             break;
         case Definition.LDetail:
             tetraPart[0].SetConj(tetraPart[1], null, tetraPart[2]);
             tetraPart[2].SetConj(null, tetraPart[3]);
             break;
         case Definition.SDetail:
             tetraPart[0].SetConj(tetraPart[1], tetraPart[2]);
             tetraPart[2].SetConj(null, null, tetraPart[3]);
             break;
         case Definition.ZDetail:
             tetraPart[0].SetConj(null, tetraPart[1], tetraPart[2]);
             tetraPart[1].SetConj(tetraPart[3]);
             break;
         default:
             return null;
     }
     return tetraPart;
 }
 public ITetrisable Create(SimpleCube sc)
 {
     this.Render(sc);
     return(this);
 }
 public void Sync(SimpleCube sc)
 {
     Render(sc);
 }
Exemple #10
0
 private static void UpdatePos(SimpleCube SimCubeInstance)
 {
     int currPosX = SimCubeInstance.getPosX;
         int currPosY = SimCubeInstance.getPosY;
         SimpleCube[] ArrConj =SimCubeInstance.getConj;
         for(int i = 0 ; i<4 ;i++)
         {
             if(ArrConj[i]!=null)
             {
                 switch(i)
                 {
                     case 0:
                         ArrConj[0].SetPos(currPosX - 1, currPosY);
                         break;
                     case 1:
                         ArrConj[1].SetPos(currPosX, currPosY-1);
                         break;
                     case 2:
                         ArrConj[2].SetPos(currPosX + 1, currPosY);
                         break;
                     case 3:
                         ArrConj[3].SetPos(currPosX, currPosY + 1);
                         break;
                 }
                 UpdatePos(ArrConj[i]);
             }
         }
 }
Exemple #11
0
 public static void Translate(GameObject cube, SimpleCube p)
 {
     cube.transform.position = new Vector3(-CubeSize / 2 + p.GetPosX * CubeSize, 0,
                                           -p.GetPosY * CubeSize);
 }
 public void Sync(SimpleCube sc)
 {
     Render(sc);
 }
 public ITetrisable Create(SimpleCube sc)
 {
     this.Render(sc);
     return this;
 }
 public SimpleCubeUnity(SimpleCube mainCube, GameObject cube)
 {
     this.mainCube = mainCube;
     this.Cube = cube;
 }
Exemple #15
0
        internal void Apply(string body, TerrainMaterial terrainMaterial, OceanMaterial oceanMaterial)
        {
            celestialBody = Tools.GetCelestialBody(body);
            PQS pqs = null;

            if (celestialBody != null && celestialBody.pqsController != null)
            {
                pqs = celestialBody.pqsController;
                pqsSurfaceMaterial = GetPQSSurfaceMaterial(pqs);
            }
            else
            {
                pqs = PQSManagerClass.GetPQS(body);
            }

            Transform transform = Tools.GetScaledTransform(body);

            if (pqs != null)
            {
                this.sphere           = pqs;
                this.transform.parent = pqs.transform;
                this.requirements     = PQS.ModiferRequirements.Default;
                this.modEnabled       = true;
                this.order           += 10;

                this.transform.localPosition = Vector3.zero;
                this.transform.localRotation = Quaternion.identity;
                this.transform.localScale    = Vector3.one;

                //Scaled space
                Renderer r = (Renderer)transform.GetComponent(typeof(Renderer));
                if (r != null)
                {
                    terrainMaterial.SaveTextures(r.material);
                    originalPlanetShader = r.material.shader;

                    TerrainManager.Log("planet shader: " + r.material.shader);
                    r.sharedMaterial.shader = TerrainManager.PlanetShader;
                    terrainMaterial.ApplyMaterialProperties(r.sharedMaterial);
                    // terrainMaterial doesn't work anyway [1/3]
                    if (pqs.ChildSpheres.Length != 0)
                    {
                        r.sharedMaterial.EnableKeyword("OCEAN_ON");
                    }
                    else
                    {
                        r.sharedMaterial.DisableKeyword("OCEAN_ON");
                    }
                }

                // terrainMaterial doesn't work anyway [2/3]
                //terrainMaterial = null;
                //originalTerrainShader = null;

                terrainMaterial.SaveTextures(pqsSurfaceMaterial);
                originalTerrainShader = pqsSurfaceMaterial.shader;
                TerrainManager.Log("Terrain Shader Name: " + originalTerrainShader.name);
                String[] keywords = pqsSurfaceMaterial.shaderKeywords;
                pqsSurfaceMaterial.shader = TerrainManager.TerrainShader;
                //    foreach (String keyword in keywords)
                //    {
                //        pqs.surfaceMaterial.EnableKeyword(keyword);
                //    }
                terrainMaterial.ApplyMaterialProperties(pqsSurfaceMaterial);

                if (oceanMaterial != null && pqs.ChildSpheres.Length > 0)
                {
                    PQS ocean = pqs.ChildSpheres[0];
                    OceanSurfaceMaterial = GetPQSSurfaceMaterial(ocean);

                    pqsSurfaceMaterial.EnableKeyword("OCEAN_ON");
                    r.sharedMaterial.EnableKeyword("OCEAN_ON");

                    keywords            = OceanSurfaceMaterial.shaderKeywords;
                    originalOceanShader = OceanSurfaceMaterial.shader;
                    TerrainManager.Log("Ocean Shader Name: " + originalOceanShader.name);
                    OceanSurfaceMaterial.shader = TerrainManager.OceanShader;
                    //    foreach (String keyword in keywords)
                    //    {
                    //        OceanSurfaceMaterial.EnableKeyword(keyword);
                    //    }

                    terrainMaterial.ApplyMaterialProperties(OceanSurfaceMaterial);
                    oceanMaterial.ApplyMaterialProperties(OceanSurfaceMaterial);

                    PQSLandControl landControl = (PQSLandControl)pqs.transform.GetComponentInChildren(typeof(PQSLandControl));
                    if (landControl != null)
                    {
                        PQSLandControl.LandClass[] landClasses = landControl.landClasses;
                        if (landClasses != null)
                        {
                            PQSLandControl.LandClass lcBeach = landClasses.FirstOrDefault(lc => lc.landClassName == "BaseBeach");
                            PQSLandControl.LandClass lcOcean = landClasses.FirstOrDefault(lc => lc.landClassName == "Ocean Bottom");
                            if (lcBeach != null || lcOcean != null)
                            {
                                lcOcean.color = lcBeach.color;
                            }
                        }


                        //    PQS ocean =
                        //    sphere.ChildSpheres[0];
                        //    GameObject go = new GameObject();
                        //    FakeOceanPQS fakeOcean = go.AddComponent<FakeOceanPQS>();
                        //    fakeOcean.Apply(ocean);
                    }

                    SimpleCube hp = new SimpleCube(2000, ref OceanBackingMaterial, TerrainManager.OceanBackingShader);
                    OceanBacking = hp.GameObject;

                    OceanBacking.transform.parent        = FlightCamera.fetch.transform;
                    OceanBacking.transform.localPosition = Vector3.zero;
                    OceanBacking.transform.localScale    = Vector3.one;
                    OceanBacking.layer = (int)Tools.Layer.Local;
                    OceanBackingMaterial.SetFloat("_OceanRadius", (float)celestialBody.Radius);
                    terrainMaterial.ApplyMaterialProperties(OceanBackingMaterial);
                }
                else
                {
                    pqsSurfaceMaterial.DisableKeyword("OCEAN_ON");
                    //r.sharedMaterial.DisableKeyword("OCEAN_ON"); // terrainMaterial doesn't work anyway [3/3]
                }


                PQSMod_CelestialBodyTransform cbt = (PQSMod_CelestialBodyTransform)pqs.transform.GetComponentInChildren(typeof(PQSMod_CelestialBodyTransform));
                if (cbt != null)
                {
                    pqsSurfaceMaterial.SetFloat("_MainTexHandoverDist", (float)(1f / cbt.deactivateAltitude));
                    if (oceanMaterial != null && pqs.ChildSpheres.Length > 0)
                    {
                        PQS ocean = pqs.ChildSpheres[0];
                        OceanSurfaceMaterial.SetFloat("_MainTexHandoverDist", (float)(1f / cbt.deactivateAltitude));
                    }
                    pqsSurfaceMaterial.SetFloat("_OceanRadius", (float)celestialBody.Radius);
                }
            }


            this.OnSetup();
            pqs.EnableSphere();
        }
Exemple #16
0
 public static void Translate(GameObject cube, SimpleCube p)
 {
     cube.transform.position = new Vector3(-CubeSize / 2 + p.GetPosX * CubeSize, 0,
          -p.GetPosY * CubeSize);
 }
Exemple #17
0
 protected void findCentralCube()
 {
     int i = 0;
         if (cubes != null)
             while (!cubes[i++].isCentral) { }
         centralCube = cubes[--i];
 }