Chicane

Scene

Header
Includes/Chicane/Runtime/Scene.hpp
Namespace
Chicane::Scene

Types

NameValueDescription
ActorsObservable
EventObservable<std::vector<Actor*>>
ActorsSubscription
EventSubscription<std::vector<Actor*>>
ComponentsObservable
EventObservable<std::vector<Component*>>
ComponentsSubscription
EventSubscription<std::vector<Component*>>

Constructors

NameDescription
Scene()

Destructors

NameDescription
~Scene()

Virtual Functions

AccessReturnModifierNameDescription
public
void
inline
onLoad()
public
void
inline
onUnload()
public
void
inline
onTick(
float inDeltaTime
)

Functions

AccessReturnModifierNameDescription
public
void
load()
public
void
unload()
public
void
tick(
float inDeltaTime
)
public
void
claim()
public
bool
const
ownsObjects()
public
void
runOnOwner(
std::function<void()> inWork
)
public
std::uint64_t
subscribe(
const  String& inName, 
std::function<void(const String &)> inCallback
)
public
void
unsubscribe(
std::uint64_t inToken
)
public
void
send(
const  String& inName, 
const  String& inData
)
public
void
receive(
const  String& inName, 
const  String& inData
)
public
void
pumpEvents()
public
void
loadSceneScript(
const  FileSystem::Path& inTrack
)
public
void
open(
const  FileSystem::Path& inFilepath
)
public
void
const
save(
const  FileSystem::Path& inFilepath
)
public
void
const
save()
public
const
getFilepath()
public
void
setFilepath(
const  FileSystem::Path& inFilepath
)
public
void
clearSerializable()
public
createActorFromTag(
const  String& inTypeName
)
public
createComponentFromTag(
const  String& inTypeName
)
public
adoptActor(
Actor* inActor
)
public
adoptComponent(
Component* inComponent
)
public
bool
const
hasActors()
public
bool
inline, const
hasActors()
public
std::vector<Actor*>
const
getActors()
public
std::vector<T*>
inline, const
getActors()
public
bool
const
hasActor(
const  String& inId
)
public
bool
inline, const
hasActor(
const  String& inId
)
public
const
getActor(
const  String& inId
)
public
T*
inline, const
getActor(
const  String& inId
)
public
T*
inline
createActor(
Params... inParams
)
public
void
removeActor(
Actor* inActor
)
public
public
bool
const
hasComponents()
public
bool
inline, const
hasComponents()
public
std::vector<Component*>
const
getComponents()
public
std::vector<T*>
inline, const
getComponents()
public
const
getComponent(
const  String& inId
)
public
T*
inline, const
getComponent(
const  String& inId
)
public
std::vector<T*>
inline, const
getActiveComponents()
public
T*
inline
createComponent(
Params... inParams
)
public
void
removeComponent(
Component* inComponent
)
public
public
bool
const
hasObject(
const  String& inId
)
public
const
getObject(
const  String& inId
)
public
void
setObjectId(
Object* inObject, 
const  String& inId
)
public
bool
inline, const
trace(
SceneTraceRequest& outRequest, 
const  Vec2& inLocation, 
const  Bounds2D& inViewport, 
const  CView* inView
)
public
bool
inline, const
trace(
SceneTraceResponse& outResponse, 
const  SceneTraceRequest& inRequest, 
const  std::vector<const  Object*>& inIgnored
)
public
bool
inline, const
trace(
SceneTraceResponse& outResponse, 
const  Vec2& inLocation, 
const  Bounds2D& inViewport, 
const  CView* inView, 
const  std::vector<const  Object*>& inIgnored
)
public
bool
inline, const
traceMulti(
std::vector<SceneTraceResponse>& outResponses, 
const  Vec2& inLocation, 
const  Bounds2D& inViewport, 
const  CView* inView, 
const  std::vector<const  Object*>& inIgnored
)
public
bool
inline, const
traceMulti(
std::vector<SceneTraceResponse>& outResponses, 
const  SceneTraceRequest& inRequest, 
const  std::vector<const  Object*>& inIgnored
)
public
std::size_t
inline, const
getActorCount()
public
std::size_t
inline, const
getComponentCount()
public
void
inline, const
forEachInFrustum(
const  ViewFrustum& inFrustum, 
Function&& inFunction
)
protected
bool
const
isLoaded()
protected
void
tickActors(
float inDeltaTime
)
protected
void
deleteActors()
protected
void
tickComponents(
float inDeltaTime
)
protected
void
deleteComponents()
protected
void
flushSpatial()
protected
void
updateSpatial(
Object* inObject
)
protected
void
removeSpatial(
Object* inObject
)
protected
float
const
getCellSize()
protected
void
setCellSize(
float inValue
)
protected
std::uint64_t
const
makeCellKey(
int inX, 
int inY, 
int inZ
)
protected
std::uint64_t
const
makeCellKey(
const  Vec3& inPosition
)
protected
void
const
collectCellKeys(
const  Object* inObject, 
std::vector<std::uint64_t>& outKeys
)
protected
void
insertIntoCell(
Object* inObject, 
std::uint64_t inKey
)
protected
void
eraseFromCell(
Object* inObject, 
std::uint64_t inKey
)
private
void
attachObject(
Object* inObject, 
const  String& inFallback
)
private
void
assignUniqueId(
Object* inObject, 
const  String& inFallback
)
private
const
makeUniqueId(
const  String& inBase
)
private
void
const
ensureUniqueId(
const  String& inId, 
const  Object* inIgnored
)
private
void
drainMutations()
private
void
unlinkActor(
Actor* inActor, 
const  std::type_index& inType
)
private
void
unlinkComponent(
Component* inComponent, 
const  std::type_index& inType
)

Members

AccessTypeModifierNameDescription
private
friend
Object
private
bool
m_bIsLoaded
private
std::size_t
m_actorCount
private
std::unordered_map<std::type_index, std::vector<Actor*>>
m_actors
private
m_actorsObservable
private
std::size_t
m_componentCount
private
std::unordered_map<std::type_index, std::vector<Component*>>
m_components
private
m_componentsObservable
private
m_filepath
private
float
m_cellSize
private
std::unordered_map<std::uint64_t, SceneSpatialCell>
m_cells
private
std::unordered_map<Object*, std::vector<std::uint64_t>>
m_objectCells
private
std::atomic<std::thread::id>
m_owner
private
Mailbox<std::function<void()>>
m_mutations
private
m_bus
private
std::unique_ptr<SceneScript>
m_sceneScript