<commit_before>// For conditions of distribution and use, see copyright notice in license.txt

#ifndef incl_Interfaces_RenderServiceInterface_h
#define incl_Interfaces_RenderServiceInterface_h

#include "IService.h"
#include "LogListenerInterface.h"
#include "CoreModuleApi.h"
#include "Vector3D.h"
#include "Quaternion.h"

#include <QObject>
#include <QVariant>
#include <set>

class QRect;

class LogListener;
typedef boost::shared_ptr<LogListener> LogListenerPtr;

namespace Scene
{
    class Entity;
}

/// Result of a raycast. Other fields are valid only if entity_ is non-null
class RaycastResult : public QObject
{
    Q_OBJECT
    
public:
    Q_PROPERTY(Scene::Entity* entity READ getentity);
    Scene::Entity* getentity() const { return entity_; }
    Q_PROPERTY(Vector3df pos READ getpos);
    Vector3df getpos() const { return pos_; }
    Q_PROPERTY(unsigned submesh READ getsubmesh);
    unsigned getsubmesh() const { return submesh_; }
    Q_PROPERTY(float u READ getu);
    float getu() const { return u_; }
    Q_PROPERTY(float v READ getv);
    float getv() const { return v_; }
    
    /// Entity that was hit, null if none
    Scene::Entity* entity_;
    /// World coordinates of hit position
    Vector3df pos_;
    /// Submesh index in entity, starting from 0
    unsigned submesh_;
    /// U coord in entity. 0 if no texture mapping
    float u_;<commit_msg>A note to remember to remove RaycastResult QObject inheritance.<commit_after>// For conditions of distribution and use, see copyright notice in license.txt

#ifndef incl_Interfaces_RenderServiceInterface_h
#define incl_Interfaces_RenderServiceInterface_h

#include "IService.h"
#include "LogListenerInterface.h"
#include "CoreModuleApi.h"
#include "Vector3D.h"
#include "Quaternion.h"

#include <QObject>
#include <QVariant>
#include <set>

class QRect;

class LogListener;
typedef boost::shared_ptr<LogListener> LogListenerPtr;

namespace Scene
{
    class Entity;
}

/// Result of a raycast. Other fields are valid only if entity_ is non-null
///\todo Remove the QObject inheritance here, and expose as a struct to scripts.
class RaycastResult : public QObject
{
    Q_OBJECT
    
public:
    Q_PROPERTY(Scene::Entity* entity READ getentity);
    Scene::Entity* getentity() const { return entity_; }
    Q_PROPERTY(Vector3df pos READ getpos);
    Vector3df getpos() const { return pos_; }
    Q_PROPERTY(unsigned submesh READ getsubmesh);
    unsigned getsubmesh() const { return submesh_; }
    Q_PROPERTY(float u READ getu);
    float getu() const { return u_; }
    Q_PROPERTY(float v READ getv);
    float getv() const { return v_; }
    
    /// Entity that was hit, null if none
    Scene::Entity* entity_;
    /// World coordinates of hit position
    Vector3df pos_;
    /// Submesh index in entity, starting from 0
    unsigned submesh_;
    /// U coord in entity. 0 if no texture mapping
    float u_;
{'fraction_non_alphanumeric': 0.08808290155440414, 'fraction_numerical': 0.004145077720207254, 'mean_word_length': 3.859060402684564, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7038641', 'n_tokens_mistral': 866, 'n_tokens_neox': 859, 'n_words': 306}