class IGameDef;
class Map;
+struct PointedThing;
+class RaycastState;
class Environment
{
u32 getDayCount();
+ /*!
+ * Gets the objects pointed by the shootline as
+ * pointed things.
+ * If this is a client environment, the local player
+ * won't be returned.
+ * @param[in] shootline_on_map the shootline for
+ * the test in world coordinates
+ *
+ * @param[out] objects found objects
+ */
+ virtual void getSelectedActiveObjects(const core::line3d<f32> &shootline_on_map,
+ std::vector<PointedThing> &objects) = 0;
+
+ /*!
+ * Returns the next node or object the shootline meets.
+ * @param state current state of the raycast
+ * @result output, will contain the next pointed thing
+ */
+ void continueRaycast(RaycastState *state, PointedThing *result);
+
// counter used internally when triggering ABMs
u32 m_added_objects;
* Below: values managed by m_time_lock
*/
// Time of day in milli-hours (0-23999); determines day and night
- u32 m_time_of_day = 9000;
- // Time of day in 0...1
- float m_time_of_day_f = 9000.0f / 24000.0f;
+ u32 m_time_of_day = 5250;
+ // Time of day in 0...1; start 5:15am unless overridden by game
+ float m_time_of_day_f = 5250.0f / 24000.0f;
// Stores the skew created by the float -> u32 conversion
// to be applied at next conversion, so that there is no real skew.
float m_time_conversion_skew = 0.0f;