Umgehen der fehlenden friends Deklaration

Mortal_Shadow

Aktives Mitglied
Hi,

zuerst einmal was ich machen will:
Ich bin dabei ein Programm zu schreiben, welches mir verschiedene 3d-Modelle einliest und per Opengl zeichnet.
Um mir Aufrufe bezüglich der pipeline zu sparen (z.B. durch Textur.bind()) will ich mir eine Art DrawManager schreiben, dem ich erstmal alle Objekte übergebe, die ich zeichnen will und der sie dann anordnet befor er sie malt.
Auch passt er auf, falls z.B. zwei Modelle teilweise die gleiche Textur benutzen, diese nur einmal zu laden.
Dazu ist es natürlich notwendig, dass alle Modelle über ihn geladen werden.

Des weiteren unterscheide ich zwischen zwei Klassen:
MSDrawable und MSDrawableIntern.
Letztere wird jeweils nur einmal geladen und jedes MSDrawable hat eine Referenz auf das zugrundeliegende MSDrawableIntern, sowie Informationen über Position, Rotation, usw.

Wie gesagt, müssen aber alle MSDrawableIntern über den DrawManager geladen werden.
Die Klasse ode zumindest ihr Konstruktor sollten also nicht public sein.

Des weiteren habe ich loader für (bisher zwei) verschiedene Dateiformate.
Da diese viele Klassen besitzen (weil die Formate auf Chunks basieren und so das laden viel leichter umzusetzen war, pro Chunk eine Klasse), sind die jeweils in ihrem eigenen Package.

Sie können nun folglich nicht auf einen Konstruktor für MSDrawableIntern zugreifen, sofern ich nicht mein Projekt komplett unübersichtlich mache indem ich alles in ein Package stopfe.

Was mache ich nun am besten?
Mfg.
 

kirax

Bekanntes Mitglied
Wäre sowas eine Alternative?
Java:
public MSDrawableIntern(DrawManager dm) {
  // register this object at the given draw manager
}
 

Mortal_Shadow

Aktives Mitglied
Führt leider auch zu unschönheiten.
Erklärung meines Projektaufbaus:

Package_1:
An8Loader
Klassen für Chunks (An8Loader braucht sie, visibility default, da niemand auserhalb des Packages die will)

Package_2:
Wie 1 mit anderer Dateiendung

Package_3
DrawManager
MSDrawableIntern
MSDrawable

------------
MSDrawableIntern enthält die Daten, die später nicht mehr verändert werden sollen/können.
Die Loader müssen aber drauf zugreifen können um sie zu initialisieren.
Eine Lösung wäre ja, MSDrawableIntern ein boolean isSetup zu verpassen sowie public Methoden zum verändern, die halt nicht mehr gehen wenn isSetup == true.
Finde ich aber auch hässlich.

------------------------------------------

Trotzdem ist mir eine Lösung gekommen:
MSDrawableIntern abgelöst durch eine public Variante MSModel.
Wenn ich nun DrawManager.load() aufrufe, speichert er das MSModel in einer ArrayList ab und gibt nur den Index zurück.
Auf diese Weise verhindere ich späteren zugriff auf das Modell.

MSDrawable enthält folglich auch nicht mehr eine Modellreferenz sondern einen Index.

Ein Modell irgendwie zu erstellen und dem DrawManager zu übergeben ist dann auch möglich, er speichert dann eine Kopie des Modells (um spätere veränderungen zu umgehen) ab und gibt ebenfalls einen Index zurück.

Müsste eigentlich funktionieren, die Umsetzung wird aber erst morgen angefangen^^.

Auf jeden Fall danke fürs reinschauen und mfg.

Bei alledem, die Entscheidung keine "friends" zu erlauben ist definitiv eine die ich nicht mag^^.
Zumindest in sub-packages sollte es möglich sein :p
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Kann ich die Nullpointer Exception umgehen Allgemeine Java-Themen 12
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
F SecurityException umgehen Allgemeine Java-Themen 3
J BufferedReader OutOfMemory umgehen? Allgemeine Java-Themen 10
P Rhino - wie mit NativeJavaObject umgehen? Allgemeine Java-Themen 2
M Wie umgehen mit Lizenzen Allgemeine Java-Themen 11
N xml fatal error umgehen Allgemeine Java-Themen 14
F Umgehen mit übergebenen Streams Allgemeine Java-Themen 3
M Geschützte Systemdateien sinnvoll umgehen bei listFiles() Allgemeine Java-Themen 7
F eclipse - Warnung für ganze Klasse umgehen Allgemeine Java-Themen 2
P Optimierung (&& ||) deaktivieren / umgehen? Allgemeine Java-Themen 9
Z mit java htaccess - abfrage bestätigen/umgehen Allgemeine Java-Themen 2
M Generics - besser programmieren, Warnung umgehen Allgemeine Java-Themen 4
M Thread.stop() umgehen ? Allgemeine Java-Themen 2
D Casting umgehen Allgemeine Java-Themen 2
Luma Trick zum Umgehen einer Performancefalle? Allgemeine Java-Themen 6
S static umgehen Allgemeine Java-Themen 5
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Hab ein kleines Problem mit fehlenden Pointern. Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben