• R/O
  • SSH
  • HTTPS

marathon: コミット


コミットメタ情報

リビジョン283 (tree)
日時2007-05-04 18:51:42
作者hogepiyo

ログメッセージ

*** empty log message ***

変更サマリ

差分

--- marathon/trunk/MapEditorOne/Reminder.txt (nonexistent)
+++ marathon/trunk/MapEditorOne/Reminder.txt (revision 283)
@@ -0,0 +1,15 @@
1+覚書 for HogePiyoとか
2+
3+これを見た人へ:これは製作者用覚書です。質問があれば答えますが、第三者が見られるように書いてあるわけではないのでそこんとこよろしくお願いします。
4+
5+・イベント
6+メニューイベントやマウスイベント等、イベント関連はMapEditorSDIViewに追加すること。
7+(CMapEditorSDIView)
8+
9+・定数
10+NUMBER_OF_POLYGON_TYPEなど各種定数はMapEditorSDI.hに記述。設定ファイルを用意するなど、外部へ移行させたほうがよい。
11+
12+・Map関数
13+MapEditorSDI.hおよびMapEditorSDI.cppにはいくつかMap関連の関数がある。
14+もうすこし整備してHPLLibに収められると良い。
15+特に点の追加・削除・セットアップなどなどは煩雑になりそうだし、良く分からん部分が多すぎる
--- marathon/trunk/MapEditorOne/繧?k縺ケ縺阪%縺ィ(TODO_jp).txt (revision 282)
+++ marathon/trunk/MapEditorOne/繧?k縺ケ縺阪%縺ィ(TODO_jp).txt (revision 283)
@@ -3,10 +3,15 @@
33 -高さウインドウ
44 ->追加する点の高さの範囲を -32767~32767に。
55 -ツール関係
6- annotation(text)
7- ->change focus when click over client rect
8- create prepared polygon ;-)
9- set button's image(done)
6+ アノテーション(テキスト)
7+ ->他のツールに変更できないなどの不具合を解消する事。
8+ ポリゴンテンプレート ;-)
9+ ボタン画像(済)
10+ 各点の決定方法(指定範囲の長方形の各頂点に外接する円を想定し、
11+ 円上に正n角形を考える。その正n角形の各頂点から中心へ向けた線と、
12+ 長方形の交点)
13+ (あるいは、一旦正n角形を作って、上下の端を短辺に合わせ、
14+ それ以外を横へ引き伸ばすことで決定する方法でもよい)
1015 -object property dialog
1116 launch by...
1217 directions=facing
@@ -67,6 +72,14 @@
6772 -点から伸びる線のうち、先がマウスクリックに近いもの順に確認する
6873 -
6974
75+ 回転ツール考えようぜ!(それかマウス+Altとかでもいいけど)
76+ 反転とかもね
77+
78+
79+ ・階段ツール
80+ ・自動ポリゴン塗りつぶしツール(8以上や、逆鋭角があるポリゴンでも塗りつぶせるように
81+ 線を追加する)
82+
7083 構造体の把握
7184 -点
7285 -線
--- marathon/trunk/AlephOneSrc/build/VC7/AlephOneSrc/ReadMe.txt (nonexistent)
+++ marathon/trunk/AlephOneSrc/build/VC7/AlephOneSrc/ReadMe.txt (revision 283)
@@ -0,0 +1,21 @@
1+========================================================================
2+ スタティック ライブラリ : AlephOneSrc プロジェクトの概要
3+========================================================================
4+
5+AppWizard はユーザー用に AlephOneSrc ライブラリ プロジェクトを作成しました。
6+ソース ファイルはプロジェクトの中には作成されていません。
7+
8+
9+AlephOneSrc.vcproj
10+ これはアプリケーション ウィザードで生成された VC++ プロジェクトのメイン プロジェクト ファイルです。
11+ ファイルが生成された Visual C++ のバージョン情報が含まれています。また、
12+ アプリケーション ウィザードで選択したプラットフォーム、構成およびプロジェクト機能に関する
13+ 情報も含まれています。
14+
15+/////////////////////////////////////////////////////////////////////////////
16+その他の注意 :
17+
18+AppWizard は "TODO:" で始まるコメントを使用して、ソースコードの追加やカスタマイズの
19+必要な場所を示します。
20+
21+/////////////////////////////////////////////////////////////////////////////
--- marathon/trunk/HPLLib/HPLMapTool.cpp (revision 282)
+++ marathon/trunk/HPLLib/HPLMapTool.cpp (revision 283)
@@ -78,6 +78,8 @@
7878 linePoint0.x, linePoint0.y, linePoint1.x, linePoint1.y, distance);
7979 return isSelect;
8080 }
81+
82+
8183 double hpl::aleph::map::getLineLength(int index)
8284 {
8385 line_data* l = get_line_data(index);
@@ -150,10 +152,9 @@
150152 }
151153
152154 /////////////////////// Sides ////////////////////////////////////////////
153-void hpl::aleph::map::fixSide(int leftPolyIndex, int rightPolyIndex, int sideIndex,
154- int lineIndex, bool isDeleteOldSide)
155+void hpl::aleph::map::fixSide(int sideIndex)
155156 {
156-
157+ //TODO
157158 }
158159
159160 /////////////////////// Groups ////////////////////////////////////////////
@@ -167,66 +168,75 @@
167168 int heightMax, int heightMin, int div)
168169 {
169170 //objects
170- std::vector<struct hpl::aleph::map::SelObject>* selobjects =
171- selectInfo->getSelObjects();
172- for(int i = 0; i < (int)selobjects->size(); i ++){
173- map_object* obj = &(SavedObjectList[selobjects->at(i).index]);
174- int type = obj->type;
175- int facing = obj->facing;
176- int x = obj->location.x;
177- int y = obj->location.y;
178- int z = obj->location.z;
179- if(z > heightMax || z < heightMin){
180- continue;
171+ {
172+ std::vector<struct hpl::aleph::map::SelObject>* selobjects =
173+ selectInfo->getSelObjects();
174+ for(int i = 0; i < (int)selobjects->size(); i ++){
175+ map_object* obj = &(SavedObjectList[selobjects->at(i).index]);
176+ int type = obj->type;
177+ int facing = obj->facing;
178+ int x = obj->location.x;
179+ int y = obj->location.y;
180+ int z = obj->location.z;
181+ if(z > heightMax || z < heightMin){
182+ continue;
183+ }
184+ if(hpl::aleph::map::isSelectPoint(px, py,
185+ x, y, offsetViewX, offsetViewY,
186+ offsetWorldX, offsetWorldY, div, objectDistance))
187+ {
188+ return true;
189+ }
181190 }
182- if(hpl::aleph::map::isSelectPoint(px, py,
183- x, y, offsetViewX, offsetViewY,
184- offsetWorldX, offsetWorldY, div, objectDistance))
185- {
186- return true;
187- }
188191 }
192+
189193 //points
190- std::vector<struct hpl::aleph::map::SelPoint>* selpoints =
191- selectInfo->getSelPoints();
192- for(int i = 0; i < (int)selpoints->size(); i ++){
193- endpoint_data* ep = &EndpointList[selpoints->at(i).index];
194- int x = ep->vertex.x;
195- int y = ep->vertex.y;
196- int drawX = (x + offsetWorldX)/div + offsetViewX;
197- int drawY = (y + offsetWorldY)/div + offsetViewY;
198- if(hpl::aleph::map::isSelectPoint(px, py,
199- x, y, offsetViewX, offsetViewY,
200- offsetWorldX, offsetWorldY, div, objectDistance))
201- {
202- return true;
194+ {
195+ std::vector<struct hpl::aleph::map::SelPoint>* selpoints =
196+ selectInfo->getSelPoints();
197+ for(int i = 0; i < (int)selpoints->size(); i ++){
198+ endpoint_data* ep = &EndpointList[selpoints->at(i).index];
199+ int x = ep->vertex.x;
200+ int y = ep->vertex.y;
201+ int drawX = (x + offsetWorldX)/div + offsetViewX;
202+ int drawY = (y + offsetWorldY)/div + offsetViewY;
203+ if(hpl::aleph::map::isSelectPoint(px, py,
204+ x, y, offsetViewX, offsetViewY,
205+ offsetWorldX, offsetWorldY, div, objectDistance))
206+ {
207+ return true;
208+ }
203209 }
204210 }
205211
206212 //lines
207- std::vector<struct hpl::aleph::map::SelLine>* sellines =
208- selectInfo->getSelLines();
209- for(int i = 0; i < (int)sellines->size(); i ++){
210- line_data* line = &LineList[sellines->at(i).index];
211- endpoint_data* begin = &EndpointList[line->endpoint_indexes[0]];
212- endpoint_data* end = &EndpointList[line->endpoint_indexes[1]];
213- if(hpl::aleph::map::isSelectLine(px, py, begin->vertex.x, begin->vertex.y,
214- end->vertex.x, end->vertex.y, offsetViewX, offsetViewY,
215- offsetWorldX, offsetWorldY, div, lineDistance))
216- {
217- return true;
213+ {
214+ std::vector<struct hpl::aleph::map::SelLine>* sellines =
215+ selectInfo->getSelLines();
216+ for(int i = 0; i < (int)sellines->size(); i ++){
217+ line_data* line = &LineList[sellines->at(i).index];
218+ endpoint_data* begin = &EndpointList[line->endpoint_indexes[0]];
219+ endpoint_data* end = &EndpointList[line->endpoint_indexes[1]];
220+ if(hpl::aleph::map::isSelectLine(px, py, begin->vertex.x, begin->vertex.y,
221+ end->vertex.x, end->vertex.y, offsetViewX, offsetViewY,
222+ offsetWorldX, offsetWorldY, div, lineDistance))
223+ {
224+ return true;
225+ }
218226 }
219227 }
220228 //polygons
221- std::vector<struct hpl::aleph::map::SelPolygon>* selpolygons =
222- selectInfo->getSelPolygons();
223- for(int i = 0; i < (int)selpolygons->size(); i ++){
224- struct world_point2d world_point;
225- world_point.x = (world_distance)((px - offsetViewX) * div - offsetWorldX);
226- world_point.y = (world_distance)((py - offsetViewY) * div - offsetWorldY);
229+ {
230+ std::vector<struct hpl::aleph::map::SelPolygon>* selpolygons =
231+ selectInfo->getSelPolygons();
232+ for(int i = 0; i < (int)selpolygons->size(); i ++){
233+ struct world_point2d world_point;
234+ world_point.x = (world_distance)((px - offsetViewX) * div - offsetWorldX);
235+ world_point.y = (world_distance)((py - offsetViewY) * div - offsetWorldY);
227236
228- if(point_in_polygon(selobjects->at(i).index, &world_point)){
229- return true;
237+ if(point_in_polygon(selpolygons->at(i).index, &world_point)){
238+ return true;
239+ }
230240 }
231241 }
232242
--- marathon/trunk/HPLLib/HPLMapTool.h (revision 282)
+++ marathon/trunk/HPLLib/HPLMapTool.h (revision 283)
@@ -18,13 +18,13 @@
1818 ///////////////////////////////////////////////////////////////////////
1919 /////////// Points //////////////////////////////////////////////////
2020 /**
21- <jp>指定した点をクリックできているかの判定を行います。
21+ <jp>指定した点をクリックしたかどうかの判定を行います
2222 <en>is view-point near world-point?
23- @param viewPX point(mouse/view) ビュー座標(スクリーン座標)
24- @param worldPX point(world) 対象とする点(実座標)
25- @param offsetViewX offset of view ビュー座標のズレ
26- @param offsetWorldX offset of world 実座標のズレ
27- @param distance check distance 閾値
23+ @param viewPX point(mouse/view) ビュー座標(スクリーン座標)
24+ @param worldPX point(world) 検査対象とする点(実座標)
25+ @param offsetViewX offset of view ビュー座標のズレ
26+ @param offsetWorldX offset of world 実座標のズレ
27+ @param distance check distance threshold 閾値
2828 */
2929 bool isSelectPoint(int viewPX, int viewPY,
3030 int worldPX, int worldPY,
@@ -32,6 +32,13 @@
3232 int offsetWorldX, int offsetWorldY,
3333 int div,
3434 int distance);
35+ /**
36+ <jp>指定した点(point1)をマウスの座標(point0)がクリックしたかどうかを判定します
37+ <en>check which two world-points are near or not
38+ @param point0 world-point0 点
39+ @param point1 world-point1 点
40+ @param distance threshold 閾値
41+ */
3542 bool isSelectPoint(world_point2d &point0, world_point2d &point1,
3643 int distance);
3744
@@ -38,7 +45,7 @@
3845 /**
3946 <jp>指定した点をグリッドに合わせ、その座標を得ます
4047 <en>snap point to grid
41- @param srcPoint
48+ @param srcPoint 元の座標
4249 @param destPoint snapped point グリッドに合わされた点座標
4350 @param gridInterval interval of grids グリッド間隔
4451 */
@@ -52,9 +59,9 @@
5259
5360 //convert view <-> world point
5461 world_point2d getWorldPoint2DFromViewPoint(int viewPX, int viewPY,
55- int offsetXWorld, int offsetYWorld, int zoomDivision, int offsetx, int offsety);
62+ int offsetXWorld, int offsetYWorld, int zoomDivision, int offsetx, int offsety);
5663 void getViewPointFromWorldPoint2D(world_point2d& point, int *dest,
57- int offsetXWorld, int offsetYWorld, int zoomDivision, int offsetx, int offsety);
64+ int offsetXWorld, int offsetYWorld, int zoomDivision, int offsetx, int offsety);
5865
5966 /////////////////////// Lines ////////////////////////////////////////////
6067 /**
@@ -61,10 +68,11 @@
6168 指定した点を用いたときに線を選択できているかを判定
6269 is view-point near world-line?
6370 @param viewPX point(mouse/view)
64- @param worldPX0 line's point(world)
65- @param offsetViewX offset of view
66- @param offsetWorldX offset of world
67- @param distance check distance
71+ @param worldPX0 line's point(world)
72+ @param offsetViewX offset of view view座標のズレ
73+ @param offsetWorldX offset of world world座標のズレ(中心位置)
74+ @param distance distance threshold which grab or not 近いかどうかの閾値
75+ @return true when mouse can grab line 線を選択できていればtrue
6876 */
6977 bool isSelectLine(int viewPX, int viewPY,
7078 int worldPX0, int worldPY0,
@@ -74,6 +82,15 @@
7482 int div,
7583 int distance);
7684
85+ /**
86+ <jp>線を選択できているか判断
87+ <en>check which mouse grob line
88+ @param point mouse location in view
89+ @param linePoint0
90+ @param linePoint1 line's location in world
91+ @param distance distance threshold which grab or not
92+ @return true when mouse can grab line
93+ */
7794 bool isSelectLine(world_point2d &point,
7895 world_point2d &linePoint0, world_point2d &linePoint1,
7996 int distance);
@@ -80,11 +97,16 @@
8097
8198 /**
8299 線の長さを取得
100+ get line's length (calc length, not get from its structure::length)
83101 @param index 線データのインデックス
102+ @return line(index)'s length
84103 */
85104 double getLineLength(int index);
105+
86106 /*
87107 線の長さを得る
108+ get line's length from two world points
109+
88110 */
89111 double getPointsDistance(world_point2d& pointA, world_point2d& pointB);
90112
@@ -98,6 +120,10 @@
98120 ////////////////////////////////////////////////////////////////////////
99121 /////////// Sides ////////////////////////////////////////////////////
100122
123+ /**
124+ <jp>壁情報をセットアップします
125+ <en>
126+ */
101127 void fixSide(int leftPolyIndex, int rightPolyIndex, int sideIndex,
102128 int lineIndex, bool isDeleteOldSide);
103129
旧リポジトリブラウザで表示