4#include <unordered_map>
42 const std::vector<std::unique_ptr<SceneObject>>&
getObjects()
const;
74 void handleMouseButton(Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods);
103 std::vector<std::unique_ptr<SceneObject>> sceneObjects;
104 std::unordered_map<uint32_t, SceneObject*> sceneObjectsByID;
105 std::vector<IPickable*> pickableObjects;
108 std::unique_ptr<Gizmo> currentGizmo;
110 std::string generateDefaultName(
const CreationOptions& creationOptions);
111 std::unordered_map<std::string, SceneObject*> usedNames;
115 void initDebugDrawables();
116 void removeDebugDrawables();
118 std::unique_ptr<PathTraces> pathTraces;
119 std::unique_ptr<Forces> forces;
120 std::unique_ptr<Colliders> colliders;
123 glm::vec3 rightClickStartDir;
GizmoType
Types of transformation gizmos.
std::variant< ObjectOptions, PointMassOptions, RigidBodyOptions > CreationOptions
const SceneObject * getTarget() const
Base interface for all renderable objects in the scene.
Abstract interface for objects that can be selected and interacted with using the mouse.
void setRenderClockRunning(bool running)
void setSimSpeed(float newSpeed)
float getSimSpeed() const
static Shader * getShader(const std::string &name)
void stepPhysics(float dt) const
void contextMenuRequested(const QPoint &globalPos, SceneObject *object)
bool saveScene(const QString &file)
void removePickable(IPickable *obj)
SceneObject * createObject(const std::string &meshName, Shader *shader=ResourceManager::getShader("basic"), const CreationOptions &=ObjectOptions{})
void objectRemoved(SceneObject *obj)
void stopSimulation() const
void selectedItem(SceneObject *object)
void focusObject(SceneObject *target)
const SceneObject * getCameraTarget() const
void addPickable(IPickable *obj)
void startSimulation() const
void deleteObject(SceneObject *obj)
SceneObject * getObjectByID(uint32_t objectID) const
void setGizmoFor(SceneObject *newTarget, bool redraw=false)
void processHeldKeys(const QSet< int > &heldKeys, float dt)
bool isNameUnique(const std::string &name, SceneObject *self) const
void selectObject(SceneObject *obj)
void setSimSpeed(float newSpeed)
std::unordered_set< uint32_t > selectedIDs
void objectAdded(SceneObject *obj)
void objectRenamed(SceneObject *obj, const QString &newName)
bool isCameraFollowing() const
bool loadScene(const QString &file)
void setGlobalAcceleration(const glm::vec3 &newAcceleration) const
SceneObject * createPrimitive(Primitive type, Shader *shader, const CreationOptions &=ObjectOptions{})
bool isPhysicsRunning() const
void removeFromPhysicsSystem(Physics::PhysicsBody *body) const
void updateHoverState(const Math::Ray &mouseRay)
void deleteCurrentGizmo()
std::unique_ptr< Physics::PhysicsSystem > physicsSystem
SimulationStopCondition stopCondition
void setObjectName(SceneObject *obj, const std::string &newName)
void setCameraTarget(SceneObject *target)
void addToPhysicsSystem(Physics::PhysicsBody *body) const
std::string makeUniqueName(const std::string &baseName) const
void removeDrawable(IDrawable *obj) const
void handleMouseButton(Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods)
void addDrawable(IDrawable *obj) const
std::unordered_set< uint32_t > hoveredIDs
glm::vec3 getGlobalAcceleration() const
bool loadPreset(const ScenePresets::PresetDescriptor &preset)
float getSimSpeed() const
void applyDebugSettings()
void setSelectFor(SceneObject *obj, bool flag=true)
const std::vector< std::unique_ptr< SceneObject > > & getObjects() const
void removeDrawable(IDrawable *drawable)
void addDrawable(IDrawable *drawable)
Represents a ray in 3D space.