mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-04 20:57:49 +00:00
47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */
|
|
|
|
#pragma once
|
|
|
|
#include "V8World/IWorldStage.h"
|
|
#include "V8World/Assembly.h"
|
|
#include "Util/BiMultiMap.h"
|
|
|
|
namespace RBX {
|
|
class Assembly;
|
|
|
|
class EdgeBuffer : public IWorldStage {
|
|
private:
|
|
// DEBUG ONLY
|
|
typedef RBX::BiMultiMap<Assembly*, Edge*> AssemblyEdgeMap; // find incomplete Joints by primitive
|
|
AssemblyEdgeMap assemblyEdges;
|
|
|
|
bool debugPushEdgeToDownstream(Edge* e);
|
|
bool debugRemoveEdgeFromDownstream(Edge* e);
|
|
bool debugAddAssembly(Assembly* a);
|
|
bool debugRemoveAssembly(Assembly* a);
|
|
|
|
bool assemblyIsHere(Assembly* a);
|
|
|
|
void assemblyPrimitiveAdded(Primitive* p);
|
|
void assemblyPrimitiveRemoved(Primitive* p);
|
|
|
|
void pushEdgeIfOk(Edge* e);
|
|
bool pushSpringOk(Edge* e);
|
|
bool pushKinematicOk(Edge* e);
|
|
void removeEdgeIfDownstream(Edge* e);
|
|
|
|
protected:
|
|
void afterAssemblyAdded(Assembly* a);
|
|
void beforeAssemblyRemoving(Assembly* a);
|
|
|
|
EdgeBuffer(IStage* upstream, IStage* downstream, World* world)
|
|
: IWorldStage(upstream, downstream, world)
|
|
{}
|
|
|
|
virtual ~EdgeBuffer();
|
|
|
|
/*override*/ void onEdgeAdded(Edge* e);
|
|
/*override*/ void onEdgeRemoving(Edge* e);
|
|
};
|
|
} // namespace
|