public QuadInitData(float3 transformPosition, float3 rotation, QuadPlane plane, WorldFace face) { this.transformPosition = transformPosition; this.rotation = rotation; this.plane = plane; this.face = face; }
public override void Initialise(GraphicsDevice device, ContentManager content) { Device = device; backdrop = content.Load <Texture2D>(@"Textures\OITBackdrop"); oit_pass1 = content.Load <Effect>(@"Shaders\OITPass1"); oit_pass2 = content.Load <Effect>(@"Shaders\OITPass2"); oit_pass3 = content.Load <Effect>(@"Shaders\OITPass3"); batch = new SpriteBatch(device); camera = new StaticCamera(new Vector3(0, 2, -150), Vector3.Zero, Device.Viewport.AspectRatio, MathHelper.ToRadians(60), 0.5f, 1000.0f); oit_colour_rt = new RenderTarget2D(Device, Device.Viewport.Width, Device.Viewport.Height, false, SurfaceFormat.Vector4, DepthFormat.None); oit_weight_rt = new RenderTarget2D(Device, Device.Viewport.Width, Device.Viewport.Height, false, SurfaceFormat.Single, DepthFormat.None); planes = new QuadPlane[nPlanes]; for (int i = 0; i < nPlanes; i++) { float angle = (i * 360.0f) / nPlanes; Color c = ColourSpaces.HSVToRGB(angle, 1, 1); planes[i] = new QuadPlane(Vector3.Zero, 80, Vector3.Up, Vector3.Right, c); } Normal = new BasicEffect(Device); Normal.TextureEnabled = false; Normal.VertexColorEnabled = true; Normal.LightingEnabled = false; Normal.Projection = camera.Projection; Normal.View = camera.View; font = content.Load <SpriteFont>("MenuFont"); bs.ColorBlendFunction = BlendFunction.Add; bs.AlphaSourceBlend = Blend.Zero; bs.ColorSourceBlend = Blend.Zero; bs.AlphaDestinationBlend = Blend.InverseSourceAlpha; bs.ColorDestinationBlend = Blend.InverseSourceAlpha; }
void CreateQuads() { planeObject = (GameObject) Resources.Load("Prefabs/QuadPlane"); m_sun = GameObject.Find ("Sunlight"); float x = transform.position.x; float y = transform.position.y; float z = transform.position.z; scalar = 5/radius; q1 = (GameObject) Instantiate(planeObject); q1.transform.position = new Vector3(x+radius,y,z); q1.transform.rotation = Quaternion.Euler(0,0,270); q1s = (QuadPlane) q1.GetComponent(typeof(QuadPlane)); q1s.scaleFactor = scalar; q1s.rad = radius; q1s.mod = (radius/2); q1s.noise = noise; q1s.cannotRevert = true; q1s.noisemod = noisemod; q1s.planetPos = transform.position; q1s.hasOcean = hasOcean; q1.name = "q1"; q1s.groundfromspace = m_groundMaterial; q1s.m_sun = m_sun; q2 = (GameObject) Instantiate(planeObject); q2.transform.position = new Vector3(x,y,z+radius); q2.transform.rotation = Quaternion.Euler(90,0,0); q2s = (QuadPlane) q2.GetComponent(typeof(QuadPlane)); q2s.scaleFactor = scalar; q2s.rad = radius; q2s.mod = (radius/2); q2s.noise = noise; q2s.cannotRevert = true; q2s.noisemod = noisemod; q2s.planetPos = transform.position; q2s.hasOcean = hasOcean; q2.name = "q2"; q2s.groundfromspace = m_groundMaterial; q2s.m_sun = m_sun; q3 = (GameObject) Instantiate(planeObject); q3.transform.position = new Vector3(x,y,z-radius); q3.transform.rotation = Quaternion.Euler(270,0,0); q3s = (QuadPlane) q3.GetComponent(typeof(QuadPlane)); q3s.scaleFactor = scalar; q3s.rad = radius; q3s.mod = (radius/2); q3s.noise = noise; q3s.cannotRevert = true; q3s.noisemod = noisemod; q3s.planetPos = transform.position; q3s.hasOcean = hasOcean; q3.name = "q3"; q3s.groundfromspace = m_groundMaterial; q3s.m_sun = m_sun; q4 = (GameObject) Instantiate(planeObject); q4.transform.position = new Vector3(x,y+radius,z); q4.transform.rotation = Quaternion.Euler(0,0,0); q4s = (QuadPlane) q4.GetComponent(typeof(QuadPlane)); q4s.scaleFactor = scalar; q4s.rad = radius; q4s.mod = (radius/2); q4s.noise = noise; q4s.cannotRevert = true; q4s.noisemod = noisemod; q4s.planetPos = transform.position; q4s.hasOcean = hasOcean; q4.name = "q4"; q4s.groundfromspace = m_groundMaterial; q4s.m_sun = m_sun; q5 = (GameObject) Instantiate(planeObject); q5.transform.position = new Vector3(x,y-radius,z); q5.transform.rotation = Quaternion.Euler(0,0,180); q5s = (QuadPlane) q5.GetComponent(typeof(QuadPlane)); q5s.scaleFactor = scalar; q5s.rad = radius; q5s.mod = (radius/2); q5s.noise = noise; q5s.cannotRevert = true; q5s.noisemod = noisemod; q5s.planetPos = transform.position; q5s.hasOcean = hasOcean; q5.name = "q5"; q5s.groundfromspace = m_groundMaterial; q5s.m_sun = m_sun; q6 = (GameObject) Instantiate(planeObject); q6.transform.position = new Vector3(x-radius,y,z); q6.transform.rotation = Quaternion.Euler(0,0,90); q6s = (QuadPlane) q6.GetComponent(typeof(QuadPlane)); q6s.scaleFactor = scalar; q6s.rad = radius; q6s.mod = (radius/2); q6s.noise = noise; q6s.cannotRevert = true; q6s.noisemod = noisemod; q6s.planetPos = transform.position; q6s.hasOcean = hasOcean; q6.name = "q6"; q6s.groundfromspace = m_groundMaterial; q6s.m_sun = m_sun; q1s.CalculatePositions(); q2s.CalculatePositions(); q3s.CalculatePositions(); q4s.CalculatePositions(); q5s.CalculatePositions(); q6s.CalculatePositions(); q1s.initSplit = true; q2s.initSplit = true; q3s.initSplit = true; q4s.initSplit = true; q5s.initSplit = true; q6s.initSplit = true; q1s.splitAgain = true; q2s.splitAgain = true; q3s.splitAgain = true; q4s.splitAgain = true; q5s.splitAgain = true; q6s.splitAgain = true; q1s.splitCount = splitCount; q1s.timesSplit = 0; q2s.splitCount = splitCount; q2s.timesSplit = 0; q3s.splitCount = splitCount; q3s.timesSplit = 0; q4s.splitCount = splitCount; q4s.timesSplit = 0; q5s.splitCount = splitCount; q5s.timesSplit = 0; q6s.splitCount = splitCount; q6s.timesSplit = 0; q1.transform.parent = gameObject.transform; q2.transform.parent = gameObject.transform; q3.transform.parent = gameObject.transform; q4.transform.parent = gameObject.transform; q5.transform.parent = gameObject.transform; q6.transform.parent = gameObject.transform; q1s.planetMaker = gameObject; q2s.planetMaker = gameObject; q3s.planetMaker = gameObject; q4s.planetMaker = gameObject; q5s.planetMaker = gameObject; q6s.planetMaker = gameObject; q1s.planeObject = planeObject; q2s.planeObject = planeObject; q3s.planeObject = planeObject; q4s.planeObject = planeObject; q5s.planeObject = planeObject; q6s.planeObject = planeObject; q1s.groundFromGround = m_groundfromgroundMaterial; q2s.groundFromGround = m_groundfromgroundMaterial; q3s.groundFromGround = m_groundfromgroundMaterial; q4s.groundFromGround = m_groundfromgroundMaterial; q5s.groundFromGround = m_groundfromgroundMaterial; q6s.groundFromGround = m_groundfromgroundMaterial; q1s.planetInit = planetInit; q2s.planetInit = planetInit; q3s.planetInit = planetInit; q4s.planetInit = planetInit; q5s.planetInit = planetInit; q6s.planetInit = planetInit; }
void SplitQuad() { if (hasSplit == false) { q1 = (GameObject) Instantiate(planeObject); //q1 = (GameObject) Instantiate(gameObject); q1.transform.position = q1pos; q1.transform.rotation = rotation; q2 = (GameObject) Instantiate(planeObject); //q2 = (GameObject) Instantiate(gameObject); q2.transform.position = q2pos; q2.transform.rotation = rotation; q3 = (GameObject) Instantiate(planeObject); //q3 = (GameObject) Instantiate(gameObject); q3.transform.position = q3pos; q3.transform.rotation = rotation; q4 = (GameObject) Instantiate(planeObject); //q4 = (GameObject) Instantiate(gameObject); q4.transform.position = q4pos; q4.transform.rotation = rotation; q1s = (QuadPlane) q1.GetComponent(typeof(QuadPlane)); q2s = (QuadPlane) q2.GetComponent(typeof(QuadPlane)); q3s = (QuadPlane) q3.GetComponent(typeof(QuadPlane)); q4s = (QuadPlane) q4.GetComponent(typeof(QuadPlane)); q1s.rad = rad; q1s.scaleFactor = scaleFactor*2; q1s.keepx = keepx; q1s.keepy = keepy; q1s.keepz = keepz; q1s.mod = (mod/2); q1s.noise = noise; //q1.renderer.material = renderer.material; q1s.parent = gameObject; q1s.cannotRevert = false; q1s.noisemod = noisemod; q1s.planetPos = planetPos; q1s.lowhold = lowhold; q2s.rad = rad; q2s.scaleFactor = scaleFactor*2; q2s.keepx = keepx; q2s.keepy = keepy; q2s.keepz = keepz; q2s.mod = (mod/2); q2s.noise = noise; //q2.renderer.material = renderer.material; q2s.parent = gameObject; q2s.cannotRevert = false; q2s.noisemod = noisemod; q2s.planetPos = planetPos; q2s.lowhold = lowhold; q3s.rad = rad; q3s.scaleFactor = scaleFactor*2; q3s.keepx = keepx; q3s.keepy = keepy; q3s.keepz = keepz; q3s.mod = (mod/2); q3s.noise = noise; //q3.renderer.material = renderer.material; q3s.parent = gameObject; q3s.cannotRevert = false; q3s.noisemod = noisemod; q3s.planetPos = planetPos; q3s.lowhold = lowhold; q4s.rad = rad; q4s.scaleFactor = scaleFactor*2; q4s.keepx = keepx; q4s.keepy = keepy; q4s.keepz = keepz; q4s.mod = (mod/2); q4s.noise = noise; //q4.renderer.material = renderer.material; q4s.parent = gameObject; q4s.cannotRevert = false; q4s.noisemod = noisemod; q4s.planetPos = planetPos; q4s.lowhold = lowhold; q1s.sq1 = q2; q1s.sq2 = q3; q1s.sq3 = q4; q2s.sq1 = q1; q2s.sq2 = q3; q2s.sq3 = q4; q3s.sq1 = q1; q3s.sq2 = q2; q3s.sq3 = q4; q4s.sq1 = q1; q4s.sq2 = q2; q4s.sq3 = q3; q1s.m_sun = m_sun; q2s.m_sun = m_sun; q3s.m_sun = m_sun; q4s.m_sun = m_sun; q1s.groundfromspace = groundfromspace; q2s.groundfromspace = groundfromspace; q3s.groundfromspace = groundfromspace; q4s.groundfromspace = groundfromspace; q1s.splitCount = splitCount; q1s.timesSplit = timesSplit + 1; q2s.splitCount = splitCount; q2s.timesSplit = timesSplit + 1; q3s.splitCount = splitCount; q3s.timesSplit = timesSplit + 1; q4s.splitCount = splitCount; q4s.timesSplit = timesSplit + 1; q1s.planetMaker = planetMaker; q2s.planetMaker = planetMaker; q3s.planetMaker = planetMaker; q4s.planetMaker = planetMaker; q1.transform.parent = planetMaker.transform; q2.transform.parent = planetMaker.transform; q3.transform.parent = planetMaker.transform; q4.transform.parent = planetMaker.transform; q1s.planeObject = planeObject; q2s.planeObject = planeObject; q3s.planeObject = planeObject; q4s.planeObject = planeObject; q1s.groundFromGround = groundFromGround; q2s.groundFromGround = groundFromGround; q3s.groundFromGround = groundFromGround; q4s.groundFromGround = groundFromGround; q1s.planetInit = planetInit; q2s.planetInit = planetInit; q3s.planetInit = planetInit; q4s.planetInit = planetInit; } else { q1.SetActive(true); q2.SetActive(true); q3.SetActive(true); q4.SetActive(true); } hasSplit = true; beginTesting = true; gameObject.SetActive(false); }