forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D (http://forum.boolean.name/showthread.php?t=6180)

Townboy 23.08.2011 11:33

Ответ: Xors3D
 
Привет! подскажите что не так ?

вот код на B3d
PHP код:

Global cub
Global camera
Global point
Global state$

Const 
STANDING=0
Const MOVING=1

Const moveSpeed#=.6
Const turnSpeed#=.1

Graphics3D 640,480,0,2

camera
=CreateCamera()
PositionEntity camera,0,150,0
RotateEntity camera
,90,0,0

plane
=CreateCube()
ScaleEntity plane,1000,.1,1000
EntityPickMode plane
,2
EntityColor plane
,160,150,150
EntityAlpha plane
,0.5 

point
=CreateCube()
EntityColor point,255,0,0

cub
=CreateCube()
ScaleEntity cub,5,5,5

state
$=STANDING

While Not KeyDown)
UpdateMovement()

PointEntity camera,cub
UpdateWorld
()
RenderWorld()

Text 0,40,"PickedX: "+PickedX#()
Text 0,60,"PickedY: "+PickedY#()
Text 0,80,"PickedZ: "+PickedZ#()

Flip
Wend

End

Function UpdateMovement()
    If 
MouseHit(1)
        If 
state$=STANDING 
            state
$=MOVING
        
EndIf 
        
CameraPick(camera,MouseX(),MouseY())
        
PositionEntity point,PickedX(),0,PickedZ()+3
    
    
EndIf
    If 
state$=MOVING            

             xt
#=PickedX#()
             
zt#=PickedZ#()
            
xl#=EntityX#(cub)
            
zl#=EntityZ#(cub)
             
cx#=xt-xl 
             
cz#=zt-zl 
             
cn#=Sqr(cx*cx+cz*cz) 
             
cx=cx/cn    
             cz
=cz/cn
            
            AlignToVector cub
,cx,0,cz,0,turnSpeed#
            
MoveEntity cub,0,0,moveSpeed#

            
If Distance2D(EntityX(cub),EntityZ(cub),PickedX(),PickedZ())<10
                state
$=STANDING
            
EndIf
    EndIf
End Function        

Function 
Distance2D#(x1#,y1#,x2#,y2#)
Local nx#=x1-x2
Local ny#=y1-y2 
Return Sqr((nx*nx)+(ny*ny))
End Function 

вот на Xors3D
PHP код:

Include "Xors3d.bb"

Global cub
Global camera
Global point
Global state$

Const 
STANDING=0
Const MOVING=1

Const moveSpeed#=.6
Const turnSpeed#=.1

xGraphics3D 640,480,0,0,1

camera
=xCreateCamera()
xPositionEntity camera,0,150,0
xRotateEntity camera
,90,0,0

plane
=xCreateCube()
xScaleEntity plane,1000,.1,1000
xEntityPickMode plane
,2
xEntityColor plane
,160,150,150
xEntityAlpha plane
,0.5 

point
=xCreateCube()
xEntityColor point,255,0,0

cub
=xCreateCube()
xScaleEntity cub,5,5,5

state
$=STANDING

While Not xKeyDown)
UpdateMovement()

xPointEntity camera,cub
xUpdateWorld
()
xRenderWorld()

xText 0,40,"PickedX: "+xPickedX#()
xText 0,60,"PickedY: "+xPickedY#()
xText 0,80,"PickedZ: "+xPickedZ#()

xFlip
Wend

End

Function UpdateMovement()
    If 
xMouseHit(1)
        If 
state$=STANDING 
            state
$=MOVING
        
EndIf 
        
xCameraPick(camera,xMouseX(),xMouseY())
        
xPositionEntity point,xPickedX(),0,xPickedZ()+3
    
    
EndIf
    If 
state$=MOVING            

             xt
#=xPickedX#()
             
zt#=xPickedZ#()
            
xl#=xEntityX#(cub)
            
zl#=xEntityZ#(cub)
             
cx#=xt-xl 
             
cz#=zt-zl 
             
cn#=Sqr(cx*cx+cz*cz) 
             
cx=cx/cn    
             cz
=cz/cn
            
            xAlignToVector cub
,cx,0,cz,0,turnSpeed#
            
xMoveEntity cub,0,0,moveSpeed#

            
If Distance2D(xEntityX(cub),xEntityZ(cub),xPickedX(),xPickedZ())<10
                state
$=STANDING
            
EndIf
    EndIf
End Function        

Function 
Distance2D#(x1#,y1#,x2#,y2#)
Local nx#=x1-x2
Local ny#=y1-y2 
Return Sqr((nx*nx)+(ny*ny))
End Function 

в каждом cub передвигается по разному
в чем может быть проблема?

.Squid 23.08.2011 15:56

Ответ: Xors3D
 
В том, что неправильно используется xAlignToVector (впрочем, в блтицевском варианте AlignToVector тоже неправильно используется). Ось Z - это 3. Ноль вообще не используется. Кстати, для этого в Ксорсе есть константы вроде AXIS_Z.

ANIK123 27.08.2011 19:32

Ответ: Xors3D
 
Привет всем)
Не подскажете как ПРАВИЛЬНО подключить Xors3d к С++ проекту?
Компилятор никак не может найти файл xors3d.h
Использую бланк из семплов ксорса, кстати семплы тоже не работают
зы: С++ начал изучать... вчера)

.Squid 27.08.2011 20:35

Ответ: Xors3D
 
В настройках ИДЕ можно указать, где компилятор будет искать хедеры, либы и т.п. Вот там можно указать путь к xors3d.h и потом подключать его
#include <xors3d.h>
или просто указать полный либо относительный путь к хедеру. Например,
#include "../inc/xors3d.h"

ANIK123 27.08.2011 20:55

Ответ: Xors3D
 
.Squid, Спасибо
Немного переделав код проблемы с нахождением файла уже нет но появились другие ошибки

Содержимое main.cpp
Код:

// include Xors3d Engine header
#include "inc\xors3d.h" 
#pragma comment (lib,"lib\Xors3d.lib ")
#include <iostream>
#include <math.h>

// program entry point
int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR commandLine, int commandShow)
{
        return 0;
}

Ошибки:
Dev C++


Visual Studio

ANIK123 28.08.2011 02:21

Ответ: Xors3D
 
Уже разобрался!!1)
Я скачал был старую версию ксорса с склада на офф-сайте - админы - обновите там сборку пожалуйста а то цветная вывеска сверху напоминает больше рекламный баннер чем ссылку на скачивание)
зы: для таких же как я немножко обманутых пользователей - качать последнюю версию ксорса надо там:

:)

.Squid 28.08.2011 02:28

Ответ: Xors3D
 
По идее она должна привлекать внимание. Привлечь внимание и заставить прочитать то, что на ней написано. А написано "Кликни здесь, чтобы скачать". И номер актуальной ревизии и дата выпуска.

ANIK123 28.08.2011 13:50

Ответ: Xors3D
 
Ну не знаю - у меня в мозгу блок стоит на всякие разноцветные рекламные прямоугольники)
Уже давно на них внимания не обращаю)))
А ну и ладно - главное что уже все работает - огромное спасибо вам за такую замечательную штуку как Xors3d!)

pozitiffcat 29.08.2011 23:56

Ответ: Xors3D
 
У меня есть предложение, может быть в двиге уже есть, но я не нашел. Реализовать функцию что то типа xCameraPickById(camera,x,y,id) пикать объеты только если они соответствуют Id , соответственно чтобы можно было задавать этот id объекту. (это надо для удобства отсечения пикания ненужный на конкретный момент объектов) например режим постройки пикать землю id=1, режим удаления растительности пикать растительность чтобы удалить это id=2, и чтобы приэтом железно не пикалась земля

.Squid 30.08.2011 00:03

Ответ: Xors3D
 
Да, возможно, стоит сделать.
Только лучше это писать на оф.форум. Ибо булку я воспринимаю как развлечение, по большому счету.

impersonalis 30.08.2011 00:03

Ответ: Xors3D
 
Это неоправданно передёргивает баланс в сторону казуальности в отношении "возможности/простота"

pozitiffcat 30.08.2011 11:11

Ответ: Xors3D
 
.Squid, окей следующий раз буду писать на оф форум, а так это полезная фича, используется во всех современных двигах, и к томуже это работы на 5 минут ;)

Кстати как насчет xLoadMesh и xLoadAnimMesh http://forum.boolean.name/showthread.php?t=15377

pozitiffcat 31.08.2011 20:43

Ответ: Xors3D
 
xEof при любых раскладах выдает 0. Другие функции работают, прошу проверить. Билд ксорса последний

.Squid 31.08.2011 21:47

Ответ: Xors3D
 
Вложений: 1
this->patience--;
Вложение 14709

pozitiffcat 31.08.2011 22:36

Ответ: Xors3D
 
короче я там сам протупил флаги оказывается есть LS_CR
PS. c++ позволяет использовать enum, может возможно его както сгенерить в хедер?


Часовой пояс GMT +4, время: 14:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot