Skybox.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // Urho3D Engine
  3. // Copyright (c) 2008-2011 Lasse Öörni
  4. //
  5. // Permission is hereby granted, free of charge, to any person obtaining a copy
  6. // of this software and associated documentation files (the "Software"), to deal
  7. // in the Software without restriction, including without limitation the rights
  8. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9. // copies of the Software, and to permit persons to whom the Software is
  10. // furnished to do so, subject to the following conditions:
  11. //
  12. // The above copyright notice and this permission notice shall be included in
  13. // all copies or substantial portions of the Software.
  14. //
  15. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21. // THE SOFTWARE.
  22. //
  23. #include "Precompiled.h"
  24. #include "Camera.h"
  25. #include "Skybox.h"
  26. Skybox::Skybox(Octant* octant, const std::string& name) :
  27. StaticModel(NODE_SKYBOX, octant, name)
  28. {
  29. }
  30. void Skybox::updateDistance(const FrameInfo& frame)
  31. {
  32. mDistance = 0.0f;
  33. }
  34. void Skybox::overrideTransforms(unsigned batchIndex, Camera& camera, const Matrix4x3** model, const Matrix4x3** view)
  35. {
  36. static Matrix4x3 overrideView;
  37. // Follow only the camera rotation, not position
  38. overrideView.define(Vector3::sZero, camera.getWorldRotation().getInverse(), Vector3::sUnity);
  39. *view = &overrideView;
  40. }
  41. void Skybox::onWorldBoundingBoxUpdate(BoundingBox& worldBoundingBox)
  42. {
  43. // The skybox is supposed to be visible everywhere, so set a humongous bounding box
  44. worldBoundingBox.define(-M_LARGE_VALUE, M_LARGE_VALUE);
  45. }