25 #ifndef __I6ENGINE_MODULES_GRAPHICSNODE_H__
26 #define __I6ENGINE_MODULES_GRAPHICSNODE_H__
46 class BoundingBoxComponent;
48 class GraphicsManager;
50 class LuminousComponent;
53 class ParticleComponent;
108 void createMeshComponent(
const int64_t coid,
const std::string & meshName,
const bool visible,
const Vec3 & position,
const Quaternion & rotation,
const Vec3 & scale);
109 void updateMeshComponent(
const int64_t coid,
const std::string & meshName,
const bool visible);
114 void updateMeshComponentVisibility(
const int64_t coid,
const bool visible);
119 void updateMeshComponentShadowCasting(
const int64_t coid,
const bool enabled);
128 void setMaterial(
const int64_t coid,
const std::string & materialName);
139 void setCustomParameter(uint32_t num,
const Vec4 & value);
144 void playAnimation(
const int64_t coid,
const std::string & anim,
bool looping,
double offsetPercent);
149 void setAnimationSpeed(int64_t coid,
double animationSpeed);
154 void stopAnimation(int64_t coid);
160 void addAnimationFrameEvent(int64_t coid, uint64_t frame,
const std::function<
void(
void)> & func);
167 void deleteMeshComponent(
const int64_t coid);
176 void createCameraComponent(
const int64_t coid,
const Vec3 & position,
const Vec3 & lookAt,
const double nC,
double aspect,
const double fov);
177 void updateCameraComponent(
const int64_t coid,
const Vec3 & position,
const Vec3 & lookAt,
const double nC,
double aspect,
const double fov);
182 void updateCameraFrustumComponent(
const int64_t coid,
const double left,
const double right,
const double top,
const double bottom);
187 void enableCompositor(int64_t coid,
const std::string & compositor,
bool enabled);
194 void createOrUpdateViewport(
const int64_t coid,
int zOrder,
const double left,
const double top,
const double width,
const double height,
const double red,
const double green,
const double blue,
const double alpha);
201 void deleteCameraComponent(
const int64_t coid);
228 void deleteLuminousComponent(
const int64_t coid);
236 void createParticleComponent(
const int64_t coid,
const std::string & emitterName,
const Vec3 & pos);
241 void particleFadeOut(int64_t coid);
246 void deleteParticleComponent(
const int64_t coid);
256 void createOrUpdateBillboard(int64_t coid,
const std::string & identifier,
const Vec3 & offset,
double width,
double height,
double u0,
double v0,
double u1,
double v1);
261 void deleteBillboard(int64_t coid,
const std::string & identifier);
266 void deleteBillboardSetComponent(int64_t coid);
271 void createMovableText(int64_t coid,
const std::string & font,
const std::string & text,
double size,
const Vec3 & colour);
276 void updateMovableText(int64_t coid,
const std::string & font,
const std::string & text,
double size,
const Vec3 & colour);
281 void updateMovableTextSetAutoScaleCallback(int64_t coid,
const std::function<
double(
const Vec3 &,
const Vec3 &)> & callback);
286 void deleteMovableText(int64_t coid);
291 void drawBoundingBox(int64_t coid,
const Vec3 & colour);
296 void removeBoundingBox(int64_t coid);
301 void createLine(int64_t coid,
const Vec3 & from,
const Vec3 & to,
const Vec3 & colour);
306 void removeLine(int64_t coid);
311 void attachToBone(int64_t coid,
GraphicsNode * otherNode,
const std::string & boneName);
316 void detachFromBone(int64_t coid,
GraphicsNode * otherNode,
const std::string & boneName);
321 void listenAttachment(
GraphicsNode * otherNode, int64_t coid,
const std::string & boneName);
326 void stopListenAttachment();
351 int64_t _gameObjectID;
356 Ogre::SceneNode * _sceneNode;
361 std::map<int64_t, CameraComponent *> _cameras;
366 std::map<int64_t, LuminousComponent *> _lights;
371 std::map<int64_t, ParticleComponent *> _particles;
376 std::map<int64_t, MeshComponent *> _meshes;
378 std::map<int64_t, BillboardComponent *> _billboardSets;
380 std::map<int64_t, MovableTextComponent *> _movableTexts;
382 std::map<int64_t, BoundingBoxComponent *> _boundingBoxes;
384 std::map<int64_t, LineComponent *> _lines;
386 int64_t _attachedCoid;
387 std::string _attachedBone;
393 std::vector<MeshComponent *> _tickingMeshes;
394 std::vector<MovableTextComponent *> _tickingMovableTexts;
Implements 4-dimensional vectors.
Saves all graphics-related data associated with one GameObject.
Class describing a 3d rotation.
Handles all light related functionality.
Implements 3-dimensional vectors.
#define ASSERT_THREAD_SAFETY_HEADER
Ogre::SceneNode * getSceneNode() const
Gets SceneNode of the object.
Handles all light related functionality.
void addTicker(MeshComponent *mesh)
void removeTicker(MeshComponent *mesh)
LightType
type of the light emitted