initial commit
This commit is contained in:
parent
55939d9418
commit
32a5a42233
63
.gitattributes
vendored
Executable file
63
.gitattributes
vendored
Executable file
@ -0,0 +1,63 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
93
.gitignore
vendored
Executable file
93
.gitignore
vendored
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
###########################
|
||||||
|
# ignore generated binaries
|
||||||
|
# but not the data folder
|
||||||
|
###########################
|
||||||
|
|
||||||
|
/bin/*
|
||||||
|
!/bin/data/
|
||||||
|
|
||||||
|
#########
|
||||||
|
# general
|
||||||
|
#########
|
||||||
|
|
||||||
|
[Bb]uild/
|
||||||
|
[Oo]bj/
|
||||||
|
*.o
|
||||||
|
[Dd]ebug*/
|
||||||
|
[Rr]elease*/
|
||||||
|
*.mode*
|
||||||
|
*.app/
|
||||||
|
*.pyc
|
||||||
|
.svn/
|
||||||
|
*.log
|
||||||
|
|
||||||
|
########################
|
||||||
|
# IDE files which should
|
||||||
|
# be ignored
|
||||||
|
########################
|
||||||
|
|
||||||
|
# XCode
|
||||||
|
*.pbxuser
|
||||||
|
*.plist
|
||||||
|
*.DS_Store
|
||||||
|
*.Makefile
|
||||||
|
Project.xcconfig
|
||||||
|
*.make
|
||||||
|
/makefile
|
||||||
|
*.xcodeproj
|
||||||
|
*.perspective
|
||||||
|
*.perspectivev3
|
||||||
|
*.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
# XCode 4
|
||||||
|
xcuserdata
|
||||||
|
*.xcworkspace
|
||||||
|
|
||||||
|
# Code::Blocks
|
||||||
|
*.depend
|
||||||
|
*.layout
|
||||||
|
|
||||||
|
# Visual Studio
|
||||||
|
*.sdf
|
||||||
|
*.opensdf
|
||||||
|
*.suo
|
||||||
|
*.pdb
|
||||||
|
*.ilk
|
||||||
|
*.aps
|
||||||
|
*.make
|
||||||
|
*.sln
|
||||||
|
*.vcxproj
|
||||||
|
*.filters
|
||||||
|
*.rc
|
||||||
|
ipch/
|
||||||
|
|
||||||
|
# Eclipse
|
||||||
|
.metadata
|
||||||
|
local.properties
|
||||||
|
.externalToolBuilders
|
||||||
|
|
||||||
|
##################
|
||||||
|
# operating system
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
*~
|
||||||
|
# KDE
|
||||||
|
.directory
|
||||||
|
.AppleDouble
|
||||||
|
|
||||||
|
# OSX
|
||||||
|
.DS_Store
|
||||||
|
*.swp
|
||||||
|
*~.nib
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
# Image file caches
|
||||||
|
Thumbs.db
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Android
|
||||||
|
.csettings
|
BIN
emptyExample.png
Normal file
BIN
emptyExample.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 111 KiB |
99
src/avatar.cpp
Normal file
99
src/avatar.cpp
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
//
|
||||||
|
// avatar.cpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 17.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "avatar.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Avatar::Avatar(int playerType){
|
||||||
|
|
||||||
|
setup(playerType);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Avatar::~Avatar(){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Avatar::setup(int playerType){
|
||||||
|
|
||||||
|
//Load the right icon from data in ofImage, by using the transmitted info about the playerType
|
||||||
|
|
||||||
|
// --> icon = ....
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Avatar::update(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
void Avatar::draw(){
|
||||||
|
|
||||||
|
icon.draw(position);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
ofVec2f Avatar::getPosition(){
|
||||||
|
|
||||||
|
return position;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
void Avatar::setPosition(int _x, int _y){
|
||||||
|
|
||||||
|
position.x = _x;
|
||||||
|
position.y = _y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Avatar::setPosition(ofVec2f _position){
|
||||||
|
|
||||||
|
position = _position;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
|
||||||
|
void Avatar::clipToAvatar(Avatar _avatar){
|
||||||
|
|
||||||
|
//Read coordinates to clip to:
|
||||||
|
ofVec2f tempCoords = _avatar.getPosition();
|
||||||
|
|
||||||
|
if( tempCoords.y == 0 ){
|
||||||
|
|
||||||
|
position.x = tempCoords.x + 20 ;
|
||||||
|
position.y = tempCoords.y + 20 ;
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
position.x = tempCoords.x + 20 ;
|
||||||
|
position.y = tempCoords.y - 20 ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
51
src/avatar.hpp
Normal file
51
src/avatar.hpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
//
|
||||||
|
// avatar.hpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 17.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ofMain.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Avatar {
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Avatar(int playerType);
|
||||||
|
~Avatar();
|
||||||
|
|
||||||
|
void setup(int playerType);
|
||||||
|
void update();
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
void setPlayerType();
|
||||||
|
int getPlayerType();
|
||||||
|
|
||||||
|
ofVec2f getPosition();
|
||||||
|
void setPosition(int x, int y);
|
||||||
|
void setPosition(ofVec2f position);
|
||||||
|
|
||||||
|
|
||||||
|
void clipToAvatar(Avatar avatar); //A particular avatar can clip its position, depending on the position of another avatar, compared to a beehive-structure)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
ofImage icon;
|
||||||
|
int playerType;
|
||||||
|
ofVec2f position;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
80
src/greatWhole.cpp
Normal file
80
src/greatWhole.cpp
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// greatWhole.cpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 17.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "greatWhole.hpp"
|
||||||
|
#include "avatar.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GreatWhole::GreatWhole()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
GreatWhole::~GreatWhole()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void GreatWhole::setup(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void GreatWhole::update(vector<Avatar*> avatars){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void GreatWhole::draw(){
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
draw the whole avatar vector
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void GreatWhole::addAvatar(Avatar avatar){
|
||||||
|
|
||||||
|
|
||||||
|
// avatars.push_back(avatar);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Set coordinates in abhängigkeit vom letzten also bei avatars at (max-1)
|
||||||
|
clip avatar dann an den letzten, y und x angepasst an x und y von avatars.at(max-1)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
41
src/greatWhole.hpp
Normal file
41
src/greatWhole.hpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
//
|
||||||
|
// greatWhole.hpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 17.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ofMain.h"
|
||||||
|
#include "avatar.hpp"
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
/* Das Große Ganze beinhaltet eine unbestimmte Anzahl an bereits eingecheckten Personen, deren Infos in Avatare gespeichert werden.
|
||||||
|
Es bedarf eine setup(), update() und draw()-Methode. Dabei soll Platz für den vector<Avatar> geschaffen werden. In update wird eine
|
||||||
|
gewisse Bewegung der Avatar-"Bubbles" definiert. Draw zeichnet die Avatare auf die Stelen, also die entsprechenden Koordinaten. */
|
||||||
|
|
||||||
|
|
||||||
|
class GreatWhole {
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
GreatWhole();
|
||||||
|
~GreatWhole();
|
||||||
|
|
||||||
|
void setup();
|
||||||
|
void update(vector<Avatar*> avatars);
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
void addAvatar(Avatar avatar);
|
||||||
|
Avatar getAvatarAt(int i);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
vector<Avatar*> avatars;
|
||||||
|
|
||||||
|
};
|
15
src/main.cpp
Normal file
15
src/main.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
#include "ofMain.h"
|
||||||
|
#include "ofApp.h"
|
||||||
|
|
||||||
|
//========================================================================
|
||||||
|
int main( ){
|
||||||
|
|
||||||
|
ofSetupOpenGL(1000,1000, OF_WINDOW); // <-------- setup the GL context
|
||||||
|
|
||||||
|
// this kicks off the running of my app
|
||||||
|
// can be OF_WINDOW or OF_FULLSCREEN
|
||||||
|
// pass in width and height too:
|
||||||
|
ofRunApp( new ofApp());
|
||||||
|
|
||||||
|
}
|
56
src/objectPhysics.cpp
Normal file
56
src/objectPhysics.cpp
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
//
|
||||||
|
// objectPhysics.cpp
|
||||||
|
// particle_combined
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 11.06.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "objectPhysics.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ObjectPhysics::ObjectPhysics(){
|
||||||
|
|
||||||
|
cout<< "ObjectPhysics Konstruktor"<<endl;
|
||||||
|
emitting = 0;
|
||||||
|
attracting = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
ObjectPhysics::~ObjectPhysics()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Attraktor::Attraktor(){
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
Emitter::Emitter(){
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------
|
96
src/objectPhysics.hpp
Normal file
96
src/objectPhysics.hpp
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
//
|
||||||
|
// objectPhysics.hpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 01.05.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef objectPhysics_hpp
|
||||||
|
#define objectPhysics_hpp
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ofMain.h"
|
||||||
|
#endif /* objectPhysics_hpp */
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectPhysics {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
ObjectPhysics();
|
||||||
|
~ObjectPhysics();
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
ofVec2f position;
|
||||||
|
bool emitting;
|
||||||
|
bool attracting;
|
||||||
|
|
||||||
|
float force;
|
||||||
|
float vel;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// ******* ATTRAKTOR ******* ATTRAKTOR ******* ATTRAKTOR ******* ATTRAKTOR ******* ATTRAKTOR *******
|
||||||
|
|
||||||
|
class Attraktor: public ObjectPhysics {
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Attraktor();
|
||||||
|
Attraktor(float x, float y);
|
||||||
|
~Attraktor();
|
||||||
|
|
||||||
|
|
||||||
|
// Attraktor(){
|
||||||
|
//
|
||||||
|
// emitting = false;
|
||||||
|
// attracting = true;
|
||||||
|
//
|
||||||
|
// cout << "Attraktor Konstruktor" << endl;
|
||||||
|
//
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
// Attraktor(float x, float y){
|
||||||
|
//
|
||||||
|
// emitting = false;
|
||||||
|
// attracting = true;
|
||||||
|
//
|
||||||
|
// position.set(x,y);
|
||||||
|
//
|
||||||
|
// cout << "Attraktor Konstruktor überladen" << endl;
|
||||||
|
// };
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// ~Attraktor(){
|
||||||
|
// cout << "Attraktor Destruktor" << endl;
|
||||||
|
// };
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// ******* EMITTER ******* EMITTER ******* EMITTER ******* EMITTER ******* EMITTER ******* EMITTER *******
|
||||||
|
|
||||||
|
class Emitter: public ObjectPhysics {
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Emitter(){
|
||||||
|
//
|
||||||
|
// emitting = true;
|
||||||
|
// attracting = false;
|
||||||
|
//
|
||||||
|
// };
|
||||||
|
Emitter();
|
||||||
|
~Emitter();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
229
src/ofApp.cpp
Normal file
229
src/ofApp.cpp
Normal file
@ -0,0 +1,229 @@
|
|||||||
|
|
||||||
|
#include "ofApp.h"
|
||||||
|
|
||||||
|
|
||||||
|
// *** GLOBALS DEFINITION *** GLOBALS DEFINITION *** GLOBALS DEFINITION *** GLOBALS DEFINITION ****
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::setup(){
|
||||||
|
|
||||||
|
VISITOR_COUNT = 0;
|
||||||
|
VISITOR_COUNT_LASTFRAME = 0;
|
||||||
|
PARTICLE_COUNT = 0;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < particleSystems.size(); i++){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// *** OSC Setup *** OSC Setup *** OSC Setup ***
|
||||||
|
|
||||||
|
receiver.setup(PORT);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::update(){
|
||||||
|
|
||||||
|
|
||||||
|
// *** OSC RECEIVER *** OSC RECEIVER *** OSC RECEIVER ***
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Here the program will read and convert the information from the tracking, count them & put coordinates of people entering the ground.
|
||||||
|
We have to define, how this information will affect the particleSystems!
|
||||||
|
|
||||||
|
-Create message, put the stuff from the received OSC in it
|
||||||
|
-duplicate the msg as string to enable onscreen supervision
|
||||||
|
-There will be a global visitor count called VISITOR_COUNT
|
||||||
|
-Use VISITOR_COUNT to correctly update the size of the visitors vector
|
||||||
|
-Iterate trough Message-values and put information in the visitors vector
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while(receiver.hasWaitingMessages()){
|
||||||
|
|
||||||
|
ofxOscMessage visitorInformations;
|
||||||
|
receiver.getNextMessage(&visitorInformations);
|
||||||
|
|
||||||
|
oscMsg = ofToString(visitorInformations);
|
||||||
|
|
||||||
|
if(visitorInformations.getAddress() == "/centroidsOfBlob") {
|
||||||
|
|
||||||
|
VISITOR_COUNT_LASTFRAME = VISITOR_COUNT;
|
||||||
|
VISITOR_COUNT = visitorInformations.getArgAsInt(0); //update the number of Visitors from OSCs first Argument, which is the number of blobs (detected Contours)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *** CHECK FOR CHANGES IN THE NUMBER OF VISITORS *** CHECK FOR CHANGES IN THE NUMBER OF VISITORS *** CHECK FOR CHANGES IN THE NUMBER OF VISITORS ***
|
||||||
|
|
||||||
|
|
||||||
|
// If there are MORE visitors now, add the difference to the visitors vector
|
||||||
|
|
||||||
|
|
||||||
|
if(VISITOR_COUNT > VISITOR_COUNT_LASTFRAME){
|
||||||
|
|
||||||
|
for(int i = 0; i < (VISITOR_COUNT - VISITOR_COUNT_LASTFRAME); i++){
|
||||||
|
|
||||||
|
visitors.push_back(new Visitor);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// If there are LESS visitors now, delete the difference from the visitors vector
|
||||||
|
|
||||||
|
|
||||||
|
if(VISITOR_COUNT < VISITOR_COUNT_LASTFRAME){
|
||||||
|
|
||||||
|
for(int i = 0; i < (VISITOR_COUNT_LASTFRAME - VISITOR_COUNT); i++){
|
||||||
|
|
||||||
|
delete visitors.at(visitors.size()); //maybe nicht zulässig, weil fehleranfällig???
|
||||||
|
//erase ergänzen!
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// *** TRANSFER TRACKING-INFORMATION INTO VISITOR-CLASS *** TRANSFER TRACKING-INFORMATION INTO VISITOR-CLASS ***
|
||||||
|
|
||||||
|
|
||||||
|
for(int i = 1; i <= VISITOR_COUNT; i++){
|
||||||
|
|
||||||
|
//put Information into visitors
|
||||||
|
|
||||||
|
float xOfVisitor = visitorInformations.getArgAsFloat(i * 2 - 1) * ofGetWindowWidth();
|
||||||
|
float yOfVisitor = visitorInformations.getArgAsFloat(i * 2) * ofGetWindowHeight();
|
||||||
|
|
||||||
|
visitors.at( i - 1 )->setPosition(xOfVisitor, yOfVisitor);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} //end of .getAddress() == "/centroidsOfBlob")
|
||||||
|
|
||||||
|
} //end of receiver.hasWaitingMessages
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *** RFID Input *** RFID Input *** RFID Input *** RFID Input *** RFID Input ***
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Here we have to define, how the particleSystems react to RFID input.
|
||||||
|
Read ID of a visitor and let the particlesystems react to it.
|
||||||
|
|
||||||
|
!!! Here in ofApp.cpp there will only be the transfer of incoming information about IDs, playertypes, etc. into the update-methods of the particleSystems. !!!
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
- Tell all particleSystems about a new checkedIn-Visitor
|
||||||
|
- Set the playerType of one particular particleSystem to the checked in.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *** MAIN UPDATE PARTICLE SYSTEMS *** MAIN UPDATE PARTICLE SYSTEMS *** MAIN UPDATE PARTICLE SYSTEMS ***
|
||||||
|
|
||||||
|
|
||||||
|
for (int p = 0; p < particleSystems.size();)
|
||||||
|
{
|
||||||
|
// Update particle systems
|
||||||
|
|
||||||
|
// particleSystems.at(p)->update("xxx , xxx , xxx , .... ");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} //end of update()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::draw(){
|
||||||
|
|
||||||
|
|
||||||
|
//draw all ParticleSystems that are in the particleSystems vector
|
||||||
|
|
||||||
|
for(int p = 0; p < particleSystems.size(); p++)
|
||||||
|
{
|
||||||
|
particleSystems.at(p)->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::keyPressed(int key){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::keyReleased(int key){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mouseMoved(int x, int y){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mouseDragged(int x, int y, int button){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mousePressed(int x, int y, int button){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mouseReleased(int x, int y, int button){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mouseEntered(int x, int y){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::mouseExited(int x, int y){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::windowResized(int w, int h){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::gotMessage(ofMessage msg){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
void ofApp::dragEvent(ofDragInfo dragInfo){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
83
src/ofApp.h
Normal file
83
src/ofApp.h
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ofMain.h"
|
||||||
|
#include "particleSystem.hpp"
|
||||||
|
#include "greatWhole.hpp"
|
||||||
|
#include "avatar.hpp"
|
||||||
|
#include "ofxOsc.h"
|
||||||
|
#include "visitor.hpp"
|
||||||
|
#include "objectPhysics.hpp"
|
||||||
|
#include "particle.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
int WINDOWSIZE_WIDTH = 1000;
|
||||||
|
int WINDOWSIZE_HEIGHT = 1000;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *** SETUP OSC INFORMATION *** SETUP OSC INFORMATION ***
|
||||||
|
|
||||||
|
#define PORT 12345
|
||||||
|
#define HOST "xxx.xxx.xxx.xxx"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ofApp : public ofBaseApp{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
void setup();
|
||||||
|
void update();
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
void keyPressed(int key);
|
||||||
|
void keyReleased(int key);
|
||||||
|
void mouseMoved(int x, int y);
|
||||||
|
void mouseDragged(int x, int y, int button);
|
||||||
|
void mousePressed(int x, int y, int button);
|
||||||
|
void mouseReleased(int x, int y, int button);
|
||||||
|
void mouseEntered(int x, int y);
|
||||||
|
void mouseExited(int x, int y);
|
||||||
|
void windowResized(int w, int h);
|
||||||
|
void dragEvent(ofDragInfo dragInfo);
|
||||||
|
void gotMessage(ofMessage msg);
|
||||||
|
|
||||||
|
|
||||||
|
int PARTICLE_COUNT;
|
||||||
|
//+1 for every new Particle, -1 for every Particle that gets older than the defined maxLife
|
||||||
|
int VISITOR_COUNT;
|
||||||
|
//the visitor count will be fed with the nBlobs-value from incoming OSC messages
|
||||||
|
int VISITOR_COUNT_LASTFRAME;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// *** OSC *** OSC *** OSC ***
|
||||||
|
|
||||||
|
string oscMsg;
|
||||||
|
ofxOscReceiver receiver;
|
||||||
|
float timeSent, timeReceived;
|
||||||
|
|
||||||
|
|
||||||
|
//Information about what is going on in the scene
|
||||||
|
|
||||||
|
int nBlobs; //count of the tracked visitors
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
vector<Visitor*> visitors;
|
||||||
|
|
||||||
|
vector<ParticleSystem*> particleSystems;
|
||||||
|
|
||||||
|
GreatWhole dasGrosseGanze;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
122
src/particle.cpp
Normal file
122
src/particle.cpp
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
//
|
||||||
|
// particle.cpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 16.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "particle.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Particle::Particle()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
Particle::~Particle()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Particle::setup(ofVec2f _position){
|
||||||
|
|
||||||
|
this->position = _position;
|
||||||
|
|
||||||
|
velocity.set(0,0);
|
||||||
|
age = 0.0;
|
||||||
|
maxLife = 12.0;
|
||||||
|
|
||||||
|
color.set(250,250,250);
|
||||||
|
size = 2.0;
|
||||||
|
mass = 100;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
void Particle::update(float deltaT){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
void Particle::draw(){
|
||||||
|
|
||||||
|
ofDrawCircle(position,size);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------
|
||||||
|
|
||||||
|
float Particle::getMaxLife(){
|
||||||
|
|
||||||
|
return maxLife;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------
|
||||||
|
|
||||||
|
float Particle::getAge(){
|
||||||
|
|
||||||
|
return age;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Particle::mapParticle(){
|
||||||
|
|
||||||
|
/*
|
||||||
|
Put an if Statement before it:
|
||||||
|
|
||||||
|
if(borderCollission == true){mapParticle()}
|
||||||
|
|
||||||
|
|
||||||
|
The particle will be mapped to a new position, using information about:
|
||||||
|
|
||||||
|
- old position
|
||||||
|
- velocity (direction)
|
||||||
|
- defined borders in the projection --> globals like window size, angle between "stelen", width of stelen, etc.
|
||||||
|
|
||||||
|
if the particle hits a border
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
54
src/particle.hpp
Normal file
54
src/particle.hpp
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
//
|
||||||
|
// particle.hpp
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 16.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ofMain.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Particle {
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Particle();
|
||||||
|
~Particle();
|
||||||
|
|
||||||
|
void setup(ofVec2f position);
|
||||||
|
void update(float deltaT);
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
float getMaxLife();
|
||||||
|
float getAge();
|
||||||
|
float getAgeNorm();
|
||||||
|
|
||||||
|
|
||||||
|
void mapParticle();
|
||||||
|
bool borderCollission();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
ofVec2f velocity;
|
||||||
|
ofVec2f position;
|
||||||
|
|
||||||
|
float maxLife;
|
||||||
|
float age;
|
||||||
|
float size;
|
||||||
|
float mass;
|
||||||
|
|
||||||
|
ofColor color;
|
||||||
|
|
||||||
|
|
||||||
|
int stele;
|
||||||
|
//on which "stele" is the particle? --> will affect the movement (mapping), when it reaches borders of its "stele" !
|
||||||
|
//if border 1/2/3/4 (<,>,v,^), then map particle
|
||||||
|
|
||||||
|
};
|
75
src/particleSystem.cpp
Normal file
75
src/particleSystem.cpp
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
//
|
||||||
|
// particleSystem.cpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 16.04.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "particleSystem.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ParticleSystem::ParticleSystem(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
ParticleSystem::~ParticleSystem(){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void ParticleSystem::setup(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void ParticleSystem::update(float deltaT, int visitorID, bool attracted){
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- wenn attracted, dann springe in Berechnung der Attraktion durch die vorhandenen Attraktoren
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
VisitorID stellt bekannten Besucher dar, also fertiges, auswertbares Profil.
|
||||||
|
visitorID steuert die Optik des Partikelsystems, aktiviert also eine Art Preset
|
||||||
|
z.B. Switch-Anweisung (visitorID 1-8):
|
||||||
|
|
||||||
|
case 0: default mode, attraction
|
||||||
|
case 1: load xml blabla1
|
||||||
|
case 2: load xml blabla2
|
||||||
|
...
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void ParticleSystem::draw(){
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
draw all the particles from the vector in the ParticleSystem
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
74
src/particleSystem.hpp
Normal file
74
src/particleSystem.hpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//
|
||||||
|
// particleSystem.hpp
|
||||||
|
// emptyExample
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 16.04.19.
|
||||||
|
//
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include "particle.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ParticleSystem {
|
||||||
|
|
||||||
|
ParticleSystem();
|
||||||
|
~ParticleSystem();
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
void setup();
|
||||||
|
void update(float deltaT, int playerType, bool attracted);
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Where do we make the quick setting-changes?
|
||||||
|
Like for exampe change direction of an emitter + its position?
|
||||||
|
--> XML?
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
vector<Particle*> particles;
|
||||||
|
|
||||||
|
//adresses of the active emitters and attractors
|
||||||
|
// vector<Attractor*> attractors;
|
||||||
|
// vector<Emitter*> emitters;
|
||||||
|
|
||||||
|
//Maybe the emitter does not have to be an own class, but is more like a Vector of Positions, so in the system.back it will setup particles for every position that is saved in this Vector
|
||||||
|
//like following:
|
||||||
|
|
||||||
|
//vector<Vec2f> positionsToEmitFrom;
|
||||||
|
|
||||||
|
|
||||||
|
float birthcount;
|
||||||
|
bool attracted;
|
||||||
|
int playerType;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
class AttractedSystem : public ParticleSystem {
|
||||||
|
|
||||||
|
|
||||||
|
bool attracted = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
165
src/visitor.cpp
Normal file
165
src/visitor.cpp
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
//
|
||||||
|
// visitor.cpp
|
||||||
|
// particle_combined
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 11.06.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "visitor.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Visitor::Visitor()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
Visitor::~Visitor()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setup(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setup(float _x, float _y){
|
||||||
|
|
||||||
|
position.x = _x;
|
||||||
|
position.y = _y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::update(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::draw(){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ofVec2f Visitor::getPosition(){
|
||||||
|
|
||||||
|
return position;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
float Visitor::getX(){
|
||||||
|
|
||||||
|
return position.x;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
float Visitor::getY(){
|
||||||
|
|
||||||
|
return position.y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setPosition(float _x, float _y){
|
||||||
|
|
||||||
|
position.x = _x;
|
||||||
|
position.y = _y;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setPosition(ofVec2f _position){
|
||||||
|
|
||||||
|
position = _position;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setX(float _x){
|
||||||
|
|
||||||
|
position.x = _x;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void Visitor::setY(float _y){
|
||||||
|
|
||||||
|
position.y = _y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
47
src/visitor.hpp
Normal file
47
src/visitor.hpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//
|
||||||
|
// visitor.hpp
|
||||||
|
// particle_combined
|
||||||
|
//
|
||||||
|
// Created by Sebastian Holzki on 11.06.19.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ofMain.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Visitor {
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
Visitor();
|
||||||
|
~Visitor();
|
||||||
|
|
||||||
|
void setup();
|
||||||
|
void setup(float _x, float _y);
|
||||||
|
void update();
|
||||||
|
void draw();
|
||||||
|
|
||||||
|
|
||||||
|
//GETTERS
|
||||||
|
ofVec2f getPosition();
|
||||||
|
float getX();
|
||||||
|
float getY();
|
||||||
|
|
||||||
|
//SETTERS
|
||||||
|
void setPosition(float x, float y);
|
||||||
|
void setPosition(ofVec2f position);
|
||||||
|
void setX(float _x);
|
||||||
|
void setY(float _y);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
ofVec2f position;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user