// is called on startup public override void Init() { _theColor = new float4(0.5f, 0.8f, 0, 1); RC.ClearColor = new float4(1, 1, 1, 1); // initialize the variables _meshTea = MeshReader.LoadMesh(@"Assets/Teapot.obj.model"); _meshFace = MeshReader.LoadMesh(@"Assets/Face.obj.model"); _spColor = MoreShaders.GetShader("simple", RC); _spTexture = MoreShaders.GetShader("texture", RC); _colorParam = _spColor.GetShaderParam("vColor"); _textureParam = _spTexture.GetShaderParam("texture1"); // load texture var imgData = RC.LoadImage("Assets/world_map.jpg"); _iTex = RC.CreateTexture(imgData); }
public override void Init() { SceneManager.RC = RC; SceneEntity _planet; // Lights DirectionalLight direct = new DirectionalLight(new float3(-500, 1000, 0), new float4(1, 1, 1, 1), new float3(0, 0, 0), 0); // Load Geometry Geometry planetgeometry = MeshReader.ReadWavefrontObj(new StreamReader(@"Assets/Sphere.obj.model")); Geometry spacebox = MeshReader.ReadWavefrontObj(new StreamReader(@"Assets/spacebox.obj.model")); // Setup Empty Objects // Null Objects SceneEntity _emptyMoon; SceneEntity _emptyMercury; SceneEntity _emptyVenus; SceneEntity _emptyEarth; SceneEntity _emptyMars; SceneEntity _emptyJupiter; SceneEntity _emptySaturn; SceneEntity _emptyUranus; SceneEntity _emptyNeptun; _emptyMoon = new SceneEntity("emptyPlanetHolder", new MoonAction(_speedearth * 5.0f)); _emptyMercury = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 4.1477f)); _emptyVenus = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 1.6150f)); _emptyEarth = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth)); _emptyMars = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 0.5320f)); _emptyJupiter = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 0.0833f)); _emptySaturn = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 0.03476f)); _emptyUranus = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 0.0119f)); _emptyNeptun = new SceneEntity("emptyPlanetHolder", new PlanetAction(_speedearth * 0.0062f)); SceneManager.Manager.AddSceneEntity(_emptyMoon); SceneManager.Manager.AddSceneEntity(_emptyMercury); SceneManager.Manager.AddSceneEntity(_emptyVenus); SceneManager.Manager.AddSceneEntity(_emptyEarth); SceneManager.Manager.AddSceneEntity(_emptyMars); SceneManager.Manager.AddSceneEntity(_emptyJupiter); SceneManager.Manager.AddSceneEntity(_emptySaturn); SceneManager.Manager.AddSceneEntity(_emptyUranus); SceneManager.Manager.AddSceneEntity(_emptyNeptun); //Setup Camera // Scene Camera SceneEntity cameraholder; CameraScript camscript; SceneEntity WorldOrigin; WorldOrigin = new SceneEntity("WorldOrigin", new RotationScript()); SceneManager.Manager.AddSceneEntity(WorldOrigin); cameraholder = new SceneEntity("CameraOwner", new CameraScript(), WorldOrigin); cameraholder.transform.GlobalPosition = new float3(0, 0, 10); scenecamera = new Camera(cameraholder); scenecamera.Resize(Width, Height); // Setup Space Box SceneEntity _spaceBox = new SceneEntity("Spacebox", new PlanetMaterial(MoreShaders.GetShader("simpel", RC), "Assets/spaceboxTexture.png"), new Renderer(spacebox)); SceneManager.Manager.AddSceneEntity(_spaceBox); // Setup Earth _planet = new SceneEntity("Earth", new PlanetAction(new float3(0, 0.69635f * 365, 0)), _emptyEarth, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/earth.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(2.9f, 0, 0); _planet.transform.GlobalScale = new float3(0.1f, 0.1f, 0.1f); _planet.AddComponent(direct); //Setup Moon //_emptyMoon.transform.LocalPosition = _earth.transform.LocalPosition; //_emptyMoonAction = new MoonAction(_speedearth * 5.0f); //_emptyMoon.AddComponent(_emptyMoonAction); _planet = new SceneEntity("Moon", new PlanetAction(new float3(0, 2.7f, 0)), _emptyMoon, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/moon.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(0.5f, 0, 0); _planet.transform.GlobalScale = new float3(0.05f, 0.05f, 0.05f); //SceneManager.Manager.AddSceneEntity(_emptyMoon); //_emptyMoon.AddChild(_moon); //_emptyMoonAction.Init(_emptyMoon); /* * _moon = new SceneEntity { name = "Moon" }; * _emptyMoonAction = new MoonAction(_earth, _speedearth * 5.0f); * * * _moonMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _moonImage = RC.LoadImage("Assets/moon.jpg"); * _moonIShaderParam = _moonMaterial.sp.GetShaderParam("texture1"); * _moonITexture = RC.CreateTexture(_moonImage); * _moonMaterial.Tex = _moonITexture; * _moonMaterial.Textureparam = _moonIShaderParam; * _moonRenderer = new Renderer(planetgeometry); * _moonRenderer.material = _moonMaterial; * _moon.AddComponent(_moonRenderer); * _emptyMoon.AddComponent(_emptyMoonAction); * _moon.transform.LocalPosition = new float3(0.5f, 0, 0); * _moon.transform.LocalScale = new float3(0.05f, 0.05f, 0.05f); * SceneManager.Manager.AddSceneEntity(_emptyMoon); * _emptyMoon.AddChild(_moon); * _emptyMoonAction.Init(_emptyMoon); */ // Setup sun _planet = new SceneEntity("Sun", new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/sun.jpg"), new Renderer(planetgeometry)); _planet.transform.LocalScale = new float3(2, 2, 2); SceneManager.Manager.AddSceneEntity(_planet); /* * _sun = new SceneEntity { name = "Sun" }; * //_sunAction.Init(_sun); * _sunMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _sunImage = RC.LoadImage("Assets/sun.jpg"); * _sunIShaderParam = _sunMaterial.sp.GetShaderParam("texture1"); * _sunITexture = RC.CreateTexture(_sunImage); * _sunMaterial.Tex = _sunITexture; * _sunMaterial.Textureparam = _sunIShaderParam; * _sunRenderer = new Renderer(planetgeometry); * _sunRenderer.material = _sunMaterial; * _sun.AddComponent(_sunRenderer); * _sun.transform.LocalPosition = new float3(0,0,0); * _sun.transform.LocalScale = new float3(2,2,2); * //_earth.AddChild(_sun); * SceneManager.Manager.AddSceneEntity(_sun); */ // Setup mercury _planet = new SceneEntity("Mercury", new PlanetAction(_speedearth * 6.2234f), _emptyMercury, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/merkur.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(2.35f, 0, 0); _planet.transform.GlobalScale = new float3(0.05f, 0.05f, 0.05f); /* * _mercury = new SceneEntity { name = "Mercury" }; * _mercuryAction.Init(_mercury); * _mercuryMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _mercuryImage = RC.LoadImage("Assets/merkur.jpg"); * _mercuryIShaderParam = _mercuryMaterial.sp.GetShaderParam("texture1"); * _mercuryITexture = RC.CreateTexture(_mercuryImage); * _mercuryMaterial.Tex = _mercuryITexture; * _mercuryMaterial.Textureparam = _mercuryIShaderParam; * _mercuryRenderer = new Renderer(planetgeometry); * _mercuryRenderer.material = _mercuryMaterial; * _mercury.AddComponent(_mercuryRenderer); * _mercury.AddComponent(_mercuryAction); * _mercury.transform.LocalPosition = new float3(2.35f, 0, 0); * _mercury.transform.LocalScale = new float3(0.05f, 0.05f, 0.05f); * //SceneManager.Manager.AddSceneEntity(_mercury); * _emptyMercury.AddChild(_mercury); */ // Setup venus _planet = new SceneEntity("Venus", new PlanetAction(_speedearth * 1.5021f), _emptyVenus, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/venus.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(2.6f, 0, 0); _planet.transform.GlobalScale = new float3(0.08f, 0.08f, 0.08f); /* * _venus = new SceneEntity { name = "Venus" }; * _venusAction.Init(_venus); * _venusMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _venusImage = RC.LoadImage("Assets/venus.jpg"); * _venusIShaderParam = _venusMaterial.sp.GetShaderParam("texture1"); * _venusITexture = RC.CreateTexture(_venusImage); * _venusMaterial.Tex = _venusITexture; * _venusMaterial.Textureparam = _venusIShaderParam; * _venusRenderer = new Renderer(planetgeometry); * _venusRenderer.material = _venusMaterial; * _venus.AddComponent(_venusRenderer); * _venus.AddComponent(_venusAction); * _venus.transform.LocalPosition = new float3(2.6f, 0, 0); * _venus.transform.LocalScale = new float3(0.08f, 0.08f, 0.08f); * //SceneManager.Manager.AddSceneEntity(_venus); * _emptyVenus.AddChild(_venus);*/ // Setup mars _planet = new SceneEntity("Mars", new PlanetAction(_speedearth * 374.125f), _emptyMars, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/mars.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(3.25f, 0, 0); _planet.transform.GlobalScale = new float3(0.07f, 0.07f, 0.07f); /* * _mars = new SceneEntity { name = "Mars" }; * _marsAction.Init(_mars); * _marsMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _marsImage = RC.LoadImage("Assets/mars.jpg"); * _marsIShaderParam = _marsMaterial.sp.GetShaderParam("texture1"); * _marsITexture = RC.CreateTexture(_marsImage); * _marsMaterial.Tex = _marsITexture; * _marsMaterial.Textureparam = _marsIShaderParam; * _marsRenderer = new Renderer(planetgeometry); * _marsRenderer.material = _marsMaterial; * _mars.AddComponent(_marsRenderer); * _mars.AddComponent(_marsAction); * _mars.transform.LocalPosition = new float3(3.25f, 0, 0); * _mars.transform.LocalScale = new float3(0.07f, 0.07f, 0.07f); * //SceneManager.Manager.AddSceneEntity(_mars); * _emptyMars.AddChild(_mars);*/ // Setup jupiter _planet = new SceneEntity("Jupiter", new PlanetAction(_speedearth * 882.62f), _emptyJupiter, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/jupiter.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(4, 0, 0); _planet.transform.GlobalScale = new float3(0.4f, 0.4f, 0.4f); /* * _jupiter = new SceneEntity { name = "Jupiter" }; * _jupiterAction.Init(_jupiter); * _jupiterMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _jupiterImage = RC.LoadImage("Assets/jupiter.jpg"); * _jupiterIShaderParam = _jupiterMaterial.sp.GetShaderParam("texture1"); * _jupiterITexture = RC.CreateTexture(_jupiterImage); * _jupiterMaterial.Tex = _jupiterITexture; * _jupiterMaterial.Textureparam = _jupiterIShaderParam; * _jupiterRenderer = new Renderer(planetgeometry); * _jupiterRenderer.material = _jupiterMaterial; * _jupiter.AddComponent(_jupiterRenderer); * _jupiter.AddComponent(_jupiterAction); * _jupiter.transform.LocalPosition = new float3(4, 0, 0); * _jupiter.transform.LocalScale = new float3(0.4f, 0.4f, 0.4f); * //SceneManager.Manager.AddSceneEntity(_jupiter); * _emptyJupiter.AddChild(_jupiter); */ // Setup saturn _planet = new SceneEntity("Saturn", new PlanetAction(_speedearth * 820.61f), _emptySaturn, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/saturn.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(5, 0, 0); _planet.transform.GlobalScale = new float3(0.3f, 0.3f, 0.3f); /*_saturn = new SceneEntity { name = "Saturn" }; * _saturnAction.Init(_saturn); * _saturnMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _saturnImage = RC.LoadImage("Assets/saturn.jpg"); * _saturnIShaderParam = _saturnMaterial.sp.GetShaderParam("texture1"); * _saturnITexture = RC.CreateTexture(_saturnImage); * _saturnMaterial.Tex = _saturnITexture; * _saturnMaterial.Textureparam = _saturnIShaderParam; * _saturnRenderer = new Renderer(planetgeometry); * _saturnRenderer.material = _saturnMaterial; * _saturn.AddComponent(_saturnRenderer); * _saturn.AddComponent(_saturnAction); * _saturn.transform.LocalPosition = new float3(5, 0, 0); * _saturn.transform.LocalScale = new float3(0.3f, 0.3f, 0.3f); * //SceneManager.Manager.AddSceneEntity(_saturn); * _emptySaturn.AddChild(_saturn);*/ // Setup uranus _planet = new SceneEntity("Uranus", new PlanetAction(_speedearth * 509.30f), _emptyUranus, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/uranus.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(6, 0, 0); _planet.transform.GlobalScale = new float3(0.12f, 0.12f, 0.12f); /*_uranus = new SceneEntity { name = "Uranus" }; * _uranusAction.Init(_uranus); * _uranusMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _uranusImage = RC.LoadImage("Assets/uranus.jpg"); * _uranusIShaderParam = _uranusMaterial.sp.GetShaderParam("texture1"); * _uranusITexture = RC.CreateTexture(_uranusImage); * _uranusMaterial.Tex = _uranusITexture; * _uranusMaterial.Textureparam = _uranusIShaderParam; * _uranusRenderer = new Renderer(planetgeometry); * _uranusRenderer.material = _uranusMaterial; * _uranus.AddComponent(_uranusRenderer); * _uranus.AddComponent(_uranusAction); * _uranus.transform.LocalPosition = new float3(6, 0, 0); * _uranus.transform.LocalScale = new float3(0.12f, 0.12f, 0.12f); * //SceneManager.Manager.AddSceneEntity(_uranus); * _emptyUranus.AddChild(_uranus);*/ // Setup neptun _planet = new SceneEntity("Neptun", new PlanetAction(_speedearth * 544.10f), _emptyNeptun, new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC), "Assets/neptune.jpg"), new Renderer(planetgeometry)); _planet.transform.GlobalPosition = new float3(7, 0, 0); _planet.transform.GlobalScale = new float3(0.14f, 0.14f, 0.14f); /*_neptun = new SceneEntity { name = "Neptun" }; * _neptunAction.Init(_neptun); * _neptunMaterial = new PlanetMaterial(MoreShaders.GetShader("diffuse2", RC)); * _neptunImage = RC.LoadImage("Assets/neptune.jpg"); * _neptunIShaderParam = _neptunMaterial.sp.GetShaderParam("texture1"); * _neptunITexture = RC.CreateTexture(_neptunImage); * _neptunMaterial.Tex = _neptunITexture; * _neptunMaterial.Textureparam = _neptunIShaderParam; * _neptunRenderer = new Renderer(planetgeometry); * _neptunRenderer.material = _neptunMaterial; * _neptun.AddComponent(_neptunRenderer); * _neptun.AddComponent(_neptunAction); * _neptun.transform.LocalPosition = new float3(7, 0, 0); * _neptun.transform.LocalScale = new float3(0.14f, 0.14f, 0.14f); * //SceneManager.Manager.AddSceneEntity(_neptun); * _emptyNeptun.AddChild(_neptun);*/ SceneManager.Manager.StartActionCode(); // Random Rotations _emptyEarth.transform.LocalEulerAngles = new float3(0, 45, 0); _emptyMercury.transform.LocalEulerAngles = new float3(0, 55, 0); _emptyVenus.transform.LocalEulerAngles = new float3(0, 335, 0); _emptyMars.transform.LocalEulerAngles = new float3(0, 125, 0); _emptyJupiter.transform.LocalEulerAngles = new float3(0, 65, 0); _emptySaturn.transform.LocalEulerAngles = new float3(0, 95, 0); _emptyUranus.transform.LocalEulerAngles = new float3(0, 145, 0); _emptyNeptun.transform.LocalEulerAngles = new float3(0, 245, 0); //camrotation.Init(WorldOrigin); RC.ClearColor = new float4(1, 0, 0, 1); }